[{"id":32667,"web_url":"https://patchwork.libcamera.org/comment/32667/","msgid":"<20241211080030.GB24546@pendragon.ideasonboard.com>","date":"2024-12-11T08:00:30","subject":"Re: [PATCH v2] DmaBufAllocator: Make DmaSyncer non-copyable","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Harvey,\n\nThank you for the patch.\n\nOn Wed, Dec 11, 2024 at 04:16:08AM +0000, Harvey Yang wrote:\n> As DmaSyncer does sync start/end in the c'tor/d'tor, copying a DmaSyncer\n> instance would trigger sync end earlier than expected. This patch makes\n> it non-copyable to avoid the issue.\n> \n> Fixes: 39482d59fe71 (\"DmaBufAllocator: Add Dma Buffer synchronization function & helper class\")\n> Signed-off-by: Harvey Yang <chenghaoyang@chromium.org>\n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> ---\n>  include/libcamera/internal/dma_buf_allocator.h |  5 +++++\n>  src/libcamera/dma_buf_allocator.cpp            | 10 ++++++++++\n>  2 files changed, 15 insertions(+)\n> \n> diff --git a/include/libcamera/internal/dma_buf_allocator.h b/include/libcamera/internal/dma_buf_allocator.h\n> index fc5de2c13edd..0cb20963098c 100644\n> --- a/include/libcamera/internal/dma_buf_allocator.h\n> +++ b/include/libcamera/internal/dma_buf_allocator.h\n> @@ -60,9 +60,14 @@ public:\n>  \n>  \texplicit DmaSyncer(SharedFD fd, SyncType type = SyncType::ReadWrite);\n>  \n> +\tDmaSyncer(DmaSyncer &&) = default;\n\nWe don't usually omit parameter names in either files.\n\n\tDmaSyncer(DmaSyncer &&other) = default;\n\n> +\tDmaSyncer &operator=(DmaSyncer &&) = default;\n\nSame here, and same in the documentation below.\n\n> +\n>  \t~DmaSyncer();\n>  \n>  private:\n> +\tLIBCAMERA_DISABLE_COPY(DmaSyncer)\n> +\n>  \tvoid sync(uint64_t step);\n>  \n>  \tSharedFD fd_;\n> diff --git a/src/libcamera/dma_buf_allocator.cpp b/src/libcamera/dma_buf_allocator.cpp\n> index 3cc52f9686b0..5f517828d960 100644\n> --- a/src/libcamera/dma_buf_allocator.cpp\n> +++ b/src/libcamera/dma_buf_allocator.cpp\n> @@ -311,6 +311,16 @@ DmaSyncer::DmaSyncer(SharedFD fd, SyncType type)\n>  \tsync(DMA_BUF_SYNC_START);\n>  }\n>  \n> +/**\n> + * \\fn DmaSyncer::DmaSyncer(DmaSyncer &&) = default;\n\ndrop ' = default;' here and below.\n\n> + * \\brief Enable move on class DmaSyncer\n\n * \\param[in] other The other instance\n\nsame below.\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> + */\n> +\n> +/**\n> + * \\fn DmaSyncer::operator=(DmaSyncer &&) = default;\n> + * \\brief Enable move on class DmaSyncer\n> + */\n> +\n>  DmaSyncer::~DmaSyncer()\n>  {\n>  \tsync(DMA_BUF_SYNC_END);","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id C46FEBD80A\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 11 Dec 2024 08:00:51 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E9F1E67E9F;\n\tWed, 11 Dec 2024 09:00:50 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9FBB766136\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 11 Dec 2024 09:00:48 +0100 (CET)","from pendragon.ideasonboard.com (81-175-209-231.bb.dnainternet.fi\n\t[81.175.209.231])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 63EF0352;\n\tWed, 11 Dec 2024 09:00:15 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"RrkFPIT4\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1733904015;\n\tbh=dDh/VSDYsr+b2DStnIu/E2V8HrTY55DwRFvg8WJG/w8=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=RrkFPIT4+dYObvPRvUbINWyHMdsMqrPqWEDnACS2ae1yhGIYSCD763ffHGtOssBq1\n\t3HDkL4wJKGQxNyN9QLCxhgLK17HG8mM5zbUkX8SVTCp01Eo1SApvWTTRkKIbJFZSrw\n\t35wnHmTlGjGrG1afHU4M2PgXmiGM6cVv7XtBbyNA=","Date":"Wed, 11 Dec 2024 10:00:30 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Harvey Yang <chenghaoyang@chromium.org>","Cc":"libcamera-devel@lists.libcamera.org,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>","Subject":"Re: [PATCH v2] DmaBufAllocator: Make DmaSyncer non-copyable","Message-ID":"<20241211080030.GB24546@pendragon.ideasonboard.com>","References":"<20241211041617.1979087-1-chenghaoyang@chromium.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20241211041617.1979087-1-chenghaoyang@chromium.org>","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":32668,"web_url":"https://patchwork.libcamera.org/comment/32668/","msgid":"<CAEB1ahuApgoy=s0O-riY-GJrGXTrk2GGpdCsJ7V9f8VOSUZdVw@mail.gmail.com>","date":"2024-12-11T08:45:36","subject":"Re: [PATCH v2] DmaBufAllocator: Make DmaSyncer non-copyable","submitter":{"id":117,"url":"https://patchwork.libcamera.org/api/people/117/","name":"Cheng-Hao Yang","email":"chenghaoyang@chromium.org"},"content":"Hi Laurent,\n\nOn Wed, Dec 11, 2024 at 4:00 PM Laurent Pinchart\n<laurent.pinchart@ideasonboard.com> wrote:\n>\n> Hi Harvey,\n>\n> Thank you for the patch.\n>\n> On Wed, Dec 11, 2024 at 04:16:08AM +0000, Harvey Yang wrote:\n> > As DmaSyncer does sync start/end in the c'tor/d'tor, copying a DmaSyncer\n> > instance would trigger sync end earlier than expected. This patch makes\n> > it non-copyable to avoid the issue.\n> >\n> > Fixes: 39482d59fe71 (\"DmaBufAllocator: Add Dma Buffer synchronization function & helper class\")\n> > Signed-off-by: Harvey Yang <chenghaoyang@chromium.org>\n> > Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > ---\n> >  include/libcamera/internal/dma_buf_allocator.h |  5 +++++\n> >  src/libcamera/dma_buf_allocator.cpp            | 10 ++++++++++\n> >  2 files changed, 15 insertions(+)\n> >\n> > diff --git a/include/libcamera/internal/dma_buf_allocator.h b/include/libcamera/internal/dma_buf_allocator.h\n> > index fc5de2c13edd..0cb20963098c 100644\n> > --- a/include/libcamera/internal/dma_buf_allocator.h\n> > +++ b/include/libcamera/internal/dma_buf_allocator.h\n> > @@ -60,9 +60,14 @@ public:\n> >\n> >       explicit DmaSyncer(SharedFD fd, SyncType type = SyncType::ReadWrite);\n> >\n> > +     DmaSyncer(DmaSyncer &&) = default;\n>\n> We don't usually omit parameter names in either files.\n>\n>         DmaSyncer(DmaSyncer &&other) = default;\n>\n> > +     DmaSyncer &operator=(DmaSyncer &&) = default;\n>\n> Same here, and same in the documentation below.\n>\n> > +\n> >       ~DmaSyncer();\n> >\n> >  private:\n> > +     LIBCAMERA_DISABLE_COPY(DmaSyncer)\n> > +\n> >       void sync(uint64_t step);\n> >\n> >       SharedFD fd_;\n> > diff --git a/src/libcamera/dma_buf_allocator.cpp b/src/libcamera/dma_buf_allocator.cpp\n> > index 3cc52f9686b0..5f517828d960 100644\n> > --- a/src/libcamera/dma_buf_allocator.cpp\n> > +++ b/src/libcamera/dma_buf_allocator.cpp\n> > @@ -311,6 +311,16 @@ DmaSyncer::DmaSyncer(SharedFD fd, SyncType type)\n> >       sync(DMA_BUF_SYNC_START);\n> >  }\n> >\n> > +/**\n> > + * \\fn DmaSyncer::DmaSyncer(DmaSyncer &&) = default;\n>\n> drop ' = default;' here and below.\n>\n> > + * \\brief Enable move on class DmaSyncer\n>\n>  * \\param[in] other The other instance\n>\n> same below.\n>\n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nThanks for the review.\nUpdated accordingly in v3. Please let me know if I missed anything.\n\nBR,\nHarvey\n\n>\n> > + */\n> > +\n> > +/**\n> > + * \\fn DmaSyncer::operator=(DmaSyncer &&) = default;\n> > + * \\brief Enable move on class DmaSyncer\n> > + */\n> > +\n> >  DmaSyncer::~DmaSyncer()\n> >  {\n> >       sync(DMA_BUF_SYNC_END);\n>\n> --\n> Regards,\n>\n> Laurent Pinchart","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id A6343BD80A\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 11 Dec 2024 08:45:50 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5652467EA1;\n\tWed, 11 Dec 2024 09:45:50 +0100 (CET)","from mail-lj1-x22b.google.com (mail-lj1-x22b.google.com\n\t[IPv6:2a00:1450:4864:20::22b])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 24A4866136\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 11 Dec 2024 09:45:48 +0100 (CET)","by mail-lj1-x22b.google.com with SMTP id\n\t38308e7fff4ca-3022c6155edso21011571fa.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 11 Dec 2024 00:45:48 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=chromium.org header.i=@chromium.org\n\theader.b=\"PqoHzY55\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=chromium.org; s=google; t=1733906747; x=1734511547;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:cc:to:subject:message-id:date:from\n\t:in-reply-to:references:mime-version:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=rA4sYn3gAOZ4THP24jo+K41bCM/Ja7SnO/HX7wtSD1I=;\n\tb=PqoHzY55m2hv4XIIIexgfFErBvVPv23w9+i9q6vUf9dV0RgO7pPgvy2AbUUaTjRwmd\n\tVqszRN4Fhkb0SAXH0/E3EdVEhKt5sxr8mRYlgFqIknCcyE60UeZuIeDpIDdXnsdp9IqP\n\tyGnwcj3OeD5EjpHMvfBjimOwrZO+WsyxIN+5Q=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1733906747; x=1734511547;\n\th=content-transfer-encoding:cc:to:subject:message-id:date:from\n\t:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc\n\t:subject:date:message-id:reply-to;\n\tbh=rA4sYn3gAOZ4THP24jo+K41bCM/Ja7SnO/HX7wtSD1I=;\n\tb=W0H872Jc0eqr4MbyoLXXC1bD8BrRWsAofX4IAunPp3BjS1qEumtCFChegEbylbbXz5\n\tM5sXx9SnJGJO8n7SUOJOn+1VS1M1hHwwr1qR0fYesZATX7miyBFry2/my23ce5HfLKhP\n\t7OUwdBJc82Nj5JGf3SKvqJhitFJixOBsXy4GLhJVPuWAlaQf+sr/r1y+s1anRAbNiOom\n\troy/WYqOtQ3X8J7BXVodIrXQTFV5r9mhES0cItpGnSbCODb+03ZwZ1utmMkHmO9VYKMA\n\tuToWOL4lb2Ly+S2X0QpqxK+nr2/PIRJ5m3v0NTSohM7GywaiHnsuZ5hZ5eY4+F5dcQf9\n\tddjg==","X-Gm-Message-State":"AOJu0Yy3kEXPjNjbAfcKQ8kXcWteT59X3JAM0i2wCRPbqy25Wbc0s46S\n\tTMkiPxSI5g4jb9TbdkYYNH9jVj6zSC37Gt7bxGwRdOVghV2OU7VFB0x6FYXJTSz5omoQ7cYOlJ5\n\tIZxLVKqyoD6YBDjOzLdjGQkMPZPeqODr3so/a","X-Gm-Gg":"ASbGncv8XhdVH38jhPeMM40YTcxLhfuxc/85fWTk7rtQMgHP4E/yFwPjJVJZkihlf8a\n\tk+pWZRJaz0GMSDWa9H6L+m8N92ha/TtW5we4LIhvqT7TvuRlDnlmEx8LdVGLiMYI=","X-Google-Smtp-Source":"AGHT+IFaDFHc7lJNRoLC3rKq/1kjLEBnhSMcaWkRG6bEGzqU4tbmnYIyw2dxhZLNTl9WRLh+DuiSTerJozGmj7PTNlM=","X-Received":"by 2002:a2e:a9a0:0:b0:302:34d6:eeec with SMTP id\n\t38308e7fff4ca-30240ca0c91mr7670411fa.2.1733906747345; Wed, 11 Dec 2024\n\t00:45:47 -0800 (PST)","MIME-Version":"1.0","References":"<20241211041617.1979087-1-chenghaoyang@chromium.org>\n\t<20241211080030.GB24546@pendragon.ideasonboard.com>","In-Reply-To":"<20241211080030.GB24546@pendragon.ideasonboard.com>","From":"Cheng-Hao Yang <chenghaoyang@chromium.org>","Date":"Wed, 11 Dec 2024 16:45:36 +0800","Message-ID":"<CAEB1ahuApgoy=s0O-riY-GJrGXTrk2GGpdCsJ7V9f8VOSUZdVw@mail.gmail.com>","Subject":"Re: [PATCH v2] DmaBufAllocator: Make DmaSyncer non-copyable","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org, \n\tKieran Bingham <kieran.bingham@ideasonboard.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]