From nobody Sat Apr 4 07:48:43 2026 Received: from mail-pj1-f65.google.com (mail-pj1-f65.google.com [209.85.216.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 02B423AB27C for ; Fri, 20 Mar 2026 11:30:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.65 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774006266; cv=none; b=IAk2rtMUqW/mg8XwGoBV/AYYFJGB9Pfq1QLxcaNCDwMjkVB2mrsGcPXF/eNqH/QMspflOQTsANftyaEO674R3mMbTAqkdlTWcshYkchKIqKb/67KaGS94gjfEJBusskx20H/qQUaCsovJAdACacm1EiwPFmm++eO2BykSIpeXVQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774006266; c=relaxed/simple; bh=1tOeyqZYtOVZMgL6rtfBgjI0Fs7mG95dZldD/yZ0cZg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=X4/HHqG6jFDShl3aiCCKY1fEH2al6SzYVKndmK5mNC1Az4zwNASQRw5/YeNJAmV9/QYsQsxXdfIsPdaH3f83HqVllk1oN2c6+E8YxI3eIaE3834fp/1N+ys4BPTQ1jdX7h/YN5+scOn40RzzXaUcVLQvW6o7/W0KJYOoV1zHjAU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=MWFmlISx; arc=none smtp.client-ip=209.85.216.65 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="MWFmlISx" Received: by mail-pj1-f65.google.com with SMTP id 98e67ed59e1d1-35bb7afdc38so1183085a91.1 for ; Fri, 20 Mar 2026 04:30:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1774006259; x=1774611059; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=jEVxMvU1gGa8q35I1aiel0gWVBZz6xlYQzbFkoU47LE=; b=MWFmlISxhOJHPszS9t4aMT+L0p+970mJnJ9piTFnCxkzBicsTK+9ASL38MIWo/2MIZ sw8Pj0G7Dv0gC6ekr9NS953JYqwiqMoUmwVa1+l/szkMbjw1I0gZg7DAokVmkdCgzvfn MiMdO38D1UhD6BfgF8P4cI7kopUHJaPQ1/s5XIMuxBjlW2bYxmf7b/kGhVNjTK1vplFx 5xeDXLIo96yA+M2v0u/8ILqU1Uz2adPOW7urbL7z/KbkxO1pKRfrUoMgCsioFe0fmUtU GOaBR/j8aB5Kr/8OeTEzTcA+OmR+Qu1zTZJCMEj/iYZk/35v6XiPMpKSGMpqi9uOf/yN tGXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774006259; x=1774611059; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=jEVxMvU1gGa8q35I1aiel0gWVBZz6xlYQzbFkoU47LE=; b=FCQwgKk9g5mO/ThnTrW+cBdZ0sVFxtY0W7I6ND6q4cIWbdcDAHSWmFBr7Xhb6mJH/Z Ik6aalQd002ClZY6VGoGkhjA5XKXt7xit2DXDjNxaNpkIy4OsAAxlxPJ3wTQ2gUhz9HP WkJwfjUJpj072JJFHdpIPz2a0vOepXVOxII/o4gQ/bUm8onS+ag/RfJpjrfiiezl+Fw7 2j6n2IRti7Dg3fd/tl5ot8G8TCKShvhTPH7vvqWW/JvPPTgzAK7R2fYKOeJ0lqpC/tWh 84eGZv+wwJqHYsWmJ81crOCDVXcshNtfhF5TtEpDI27Zyq5FxldtYWGxvqbOb5rnjZ63 R1WA== X-Forwarded-Encrypted: i=1; AJvYcCV2zmABloVTxH12/HbfO73yEW+bqf5JS2IMvM6M3b5tz6cp7/EWJSLxJE1pgvtxxyJZTFHK1Y8zRPIykRw=@vger.kernel.org X-Gm-Message-State: AOJu0YygejOteUNWIydvSxx865RqpZNISrgfCYC7LF06tT1WdCr073i7 AZ+U+IrzkUh3/EeQkSef4qkDTlexh8vAXEx4KM2I2yI9Fze4D1vOTDLa X-Gm-Gg: ATEYQzxGpFo26LhXiUe3Io6PcEaTsxRihqUGMv+jTiMgupyKX0ET1zgm1oAysCpWaMD NOQU0sbTZuM44K9RKu80hQQxpr6IWhPD1k2+l6JqY2ysMmjWWjKZfFRedwNE/ap0WgR612l8+4u a0IHcTRzyED0JfmhABU0UE7QLlUTmDyg6FQSGzTCAMEUL6j+sIJCMRc/ywcjkNX7bGH3NIqvWZS GUz+T+WCvo6qZ8ZAsE+10E+0ss+WvdRSQE5Quy08l8FAaUJMMYDV0vLhKmDd49Ad3UFRiFeeY8F dAaqBOATuQWS8HrWzCxMHo3fRp2/tRXSLzLSOBaAsL099eXFdc94BAMOI6QFpVu3lsowGI7nWH+ CMtNQ6UPlDuvYmLuCgUExJphGhCKRKPdRn0/fzmvUyBbSLkpGg0OHo5qd2dKu2Ae8lOnavnz4Tj KKNMrbEKlxNyOa3zYR4piO1rqOne/xw/EYG32RpYetaDT7Iw5PdaVPFz/OrZ6yrOLBAfdL+WNjo d/ighc/aBNm44BVKWJ0uIiJsSNg684++nc= X-Received: by 2002:a17:90b:5584:b0:359:fd50:e733 with SMTP id 98e67ed59e1d1-35bd2d34ae3mr1942896a91.31.1774006259038; Fri, 20 Mar 2026 04:30:59 -0700 (PDT) Received: from CN4GKQDX76.bytedance.net ([61.213.176.57]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-35bd356d29esm1052261a91.4.2026.03.20.04.30.56 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Fri, 20 Mar 2026 04:30:58 -0700 (PDT) From: Zile Xiong To: Tomasz Figa , Marek Szyprowski , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, Zile Xiong Subject: [PATCH v3] media: vb2: use ssize_t for vb2_read/vb2_write Date: Fri, 20 Mar 2026 19:30:52 +0800 Message-ID: <20260320113052.46989-1-xiongzile99@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260320081545.4624-1-xiongzile99@gmail.com> References: <20260320081545.4624-1-xiongzile99@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" vb2_read() and vb2_write() return size_t, but propagate negative errno values from __vb2_perform_fileio() via implicit signed/unsigned conversions in callers (e.g. vb2_fop_read()), which is not obvious. vb2_fop_read() and vb2_fop_write() already return ssize_t, so using size_t for vb2_read(), vb2_write(), and __vb2_perform_fileio() is inconsistent. Switch these helpers to ssize_t so they can return either a byte count or a negative error code. Fixes: b25748fe6126 ("[media] v4l: videobuf2: add read() and write() emulat= or") Cc: stable@vger.kernel.org Acked-by: Marek Szyprowski Signed-off-by: Zile Xiong --- v3: - add Cc: stable@vger.kernel.org - fix function argument alignment v2: - add Fixes tag - clarify type consistency with vb2_fop_read/write --- drivers/media/common/videobuf2/videobuf2-core.c | 13 +++++++------ include/media/videobuf2-core.h | 8 ++++---- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/drivers/media/common/videobuf2/videobuf2-core.c b/drivers/medi= a/common/videobuf2/videobuf2-core.c index adf668b213c2..d5c3d4d939aa 100644 --- a/drivers/media/common/videobuf2/videobuf2-core.c +++ b/drivers/media/common/videobuf2/videobuf2-core.c @@ -2990,8 +2990,9 @@ static int __vb2_cleanup_fileio(struct vb2_queue *q) * @nonblock: mode selector (1 means blocking calls, 0 means nonblocking) * @read: access mode selector (1 means read, 0 means write) */ -static size_t __vb2_perform_fileio(struct vb2_queue *q, char __user *data,= size_t count, - loff_t *ppos, int nonblock, int read) +static ssize_t __vb2_perform_fileio(struct vb2_queue *q, char __user *data, + size_t count, loff_t *ppos, + int nonblock, int read) { struct vb2_fileio_data *fileio; struct vb2_fileio_buf *buf; @@ -3154,15 +3155,15 @@ static size_t __vb2_perform_fileio(struct vb2_queue= *q, char __user *data, size_ return ret; } =20 -size_t vb2_read(struct vb2_queue *q, char __user *data, size_t count, - loff_t *ppos, int nonblocking) +ssize_t vb2_read(struct vb2_queue *q, char __user *data, size_t count, + loff_t *ppos, int nonblocking) { return __vb2_perform_fileio(q, data, count, ppos, nonblocking, 1); } EXPORT_SYMBOL_GPL(vb2_read); =20 -size_t vb2_write(struct vb2_queue *q, const char __user *data, size_t coun= t, - loff_t *ppos, int nonblocking) +ssize_t vb2_write(struct vb2_queue *q, const char __user *data, size_t cou= nt, + loff_t *ppos, int nonblocking) { return __vb2_perform_fileio(q, (char __user *) data, count, ppos, nonblocking, 0); diff --git a/include/media/videobuf2-core.h b/include/media/videobuf2-core.h index 4424d481d7f7..4b4f4c15c53a 100644 --- a/include/media/videobuf2-core.h +++ b/include/media/videobuf2-core.h @@ -1093,8 +1093,8 @@ __poll_t vb2_core_poll(struct vb2_queue *q, struct fi= le *file, * @ppos: file handle position tracking pointer * @nonblock: mode selector (1 means blocking calls, 0 means nonblocking) */ -size_t vb2_read(struct vb2_queue *q, char __user *data, size_t count, - loff_t *ppos, int nonblock); +ssize_t vb2_read(struct vb2_queue *q, char __user *data, size_t count, + loff_t *ppos, int nonblock); /** * vb2_write() - implements write() syscall logic. * @q: pointer to &struct vb2_queue with videobuf2 queue. @@ -1103,8 +1103,8 @@ size_t vb2_read(struct vb2_queue *q, char __user *dat= a, size_t count, * @ppos: file handle position tracking pointer * @nonblock: mode selector (1 means blocking calls, 0 means nonblocking) */ -size_t vb2_write(struct vb2_queue *q, const char __user *data, size_t coun= t, - loff_t *ppos, int nonblock); +ssize_t vb2_write(struct vb2_queue *q, const char __user *data, size_t cou= nt, + loff_t *ppos, int nonblock); =20 /** * typedef vb2_thread_fnc - callback function for use with vb2_thread. --=20 2.39.5