From nobody Sat Apr 4 07:48:43 2026 Received: from mail-pf1-f193.google.com (mail-pf1-f193.google.com [209.85.210.193]) (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 67AC0371053 for ; Fri, 20 Mar 2026 08:15:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.193 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773994559; cv=none; b=uW4fXAQTmgnktiLH5Y1akFQXoAYmnbYO39ilu+FXk2CClSRZpoTxJPpGmvLZaVkMGmiez05ZzAWny3BE2YebUjQGVrYmlXR6Zluvler8mR1SC0ThZ0kSr94aT1P3ERiE+85kJEK3g2EEhXIXFdxGoZ7hB7oC40cZaC5QpJY9Hok= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773994559; c=relaxed/simple; bh=Ht8Ca3bvCpwea0dISBMHeU5SIbAdHxxBCs6iEdJ+oc4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SgXewndS6LlGs69JYxJATRHixUq7TRBYgMVP57OVEWp+NmwBKoF7TyrtWtcQ8hobzhBMcMJXSC/8l65ZZ3MENEb+b4y4u8Zmeqv4WOUFkRJbyQ2JLP3SFfzqmRCppE8DyIoxV58pCFh2cVQi32B1T6Gi5kU6ekkab9qmGkIbLGg= 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=bnt56wvu; arc=none smtp.client-ip=209.85.210.193 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="bnt56wvu" Received: by mail-pf1-f193.google.com with SMTP id d2e1a72fcca58-82a3d3235c9so1627598b3a.2 for ; Fri, 20 Mar 2026 01:15:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773994558; x=1774599358; 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=FymbYBabUVFHOjTwlZbzKKh/jGsvG1YlqLzH42ljfg0=; b=bnt56wvuTBcnu6k3vyGuaXrqAWVzKc0ys4RtMOuGtBNIE7xFL+I8JuKRUsO7trLfed 3BfY4zaYDn+1UtLK+GNcYTvul/m5Fx2qwOqNfm3I4RhHI2MeB6SGJ24JKO2uR9nWHfvd Afn/UNymi60LQatnRIXaMd8/cyGVnzCXyl22OcDrrszWuvjaZR8gdgskSXYM1J9eG4fJ 3ZpOcrRfMPRLYyrYu2zyDaEir0rVReWSbc0lsHGZXOWBMtzj+EJTFGiujvoVV9aHMo1j Iz1hyI5gS+ZscmdAPV+foniAJVGWXtKFpU6sHDdBwLUgLOsPSKwGBmh7ZYL08eUZNk4h fREA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773994558; x=1774599358; 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=FymbYBabUVFHOjTwlZbzKKh/jGsvG1YlqLzH42ljfg0=; b=WTMvjsWAQPo+bdmUaqrArOIqy+EXhdFWQLUZSYv21MzmX9AoGy8H4fyUGUMNJeJKCC xUrIgFHQNbityW83dHqbX91poakbsftNIW6UhvcZIOUWQPb6R9M+FEBm8liJ4/3+s1SA emkZSEIEJRnO+AGC71bbTITAbyu0Lo8wDD8eiQ/Jm92D2DaGjNNkw2LBY8eZvG1Ql/1L 4Gqnca/QvMh34Y4DI2ZhRcY2u8XmaW/Z0cy1ko+rSWL2iUvbF5EmaefhJVd828CwMmr9 sPJhPquP9j5KfkSWId+rWZWDko1QLobCKTG2KcVn1jY26I0gM4Uk9ClvK031B5tTMpRi +pPw== X-Forwarded-Encrypted: i=1; AJvYcCUUHJZ4WKy+TEKF7XxPSTMMGnQAv5nztVp3Amv4vc1d9Ri80S6SnM+H00tIOpRphQvOBxYdE44EvKKIhn4=@vger.kernel.org X-Gm-Message-State: AOJu0YzyttC3/rHorZHiE/Oe2HFsBSWPfwOjJzESTAU1wa+yLCXkr+OF vp5g551oT9c6KTCqg/wlWH8nciOKZ7B4iPl/E9uhbzz3AXUeigGlHl7U X-Gm-Gg: ATEYQzzboFrvbqEiCvRI9W7KndvHtSHObsPQMl3RMu5kB1JTkeCLSq7K65wh4lMIzz2 BaY/yQHeH2mIWf4YwkiESEQpZpNub0Ucq5YPFCKtNW8hYgPwWtL1vyqWlkfkH9LtMIi8hhIcW7a uVCh7GCIjRc7lTkSUBQc6etg3xHNQl1t+hrp1RxaObpJlhwEDnp+b0Tzl8bf9cDkQ+nHDNOgBz9 X0Fo4BgYgsk+82+PgVYK3FkF7qIjz+redcp1BaBB8sJCMPuuXzd8AnDObZKTgYBHdWADABXaPAP sw13zd9r48/XynzrGJcRdjPhwU57dKVg5G6+PWETsEZajs/lTJQJ6nBpS0O7+3QAD1vvDaSgmGN YEn24hHVa3Qi/L8AD5MhinKetgBQNBiN28vAVMVGO3Hd6JIsfueKjgLo0M4RTGGrpNTDpdM2xZd vsfFwQ50iKkEGvrsli4jPduolnEpSePtgtKHrs+oMQ9iMOJJOi67Tih4KNUJrGwvm5iCSg+VK/z JllrJPZUOpxUjEnY2RAVnm/r6VrAfmrDJp+P0eh X-Received: by 2002:a05:6a00:2309:b0:82a:79b8:2049 with SMTP id d2e1a72fcca58-82a8c2389c7mr2018173b3a.25.1773994557680; Fri, 20 Mar 2026 01:15:57 -0700 (PDT) Received: from CN4GKQDX76.bytedance.net ([61.213.176.57]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82b03bbebb2sm1524048b3a.14.2026.03.20.01.15.55 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Fri, 20 Mar 2026 01:15:56 -0700 (PDT) From: Zile Xiong To: Tomasz Figa , Marek Szyprowski , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Zile Xiong Subject: [PATCH v2] media: vb2: use ssize_t for vb2_read/vb2_write Date: Fri, 20 Mar 2026 16:15:45 +0800 Message-ID: <20260320081545.4624-1-xiongzile99@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260320065445.75351-1-xiongzile99@gmail.com> References: <20260320065445.75351-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") Acked-by: Marek Szyprowski Signed-off-by: Zile Xiong v2: - add Fixes tag (suggested by Marek Szyprowski) --- drivers/media/common/videobuf2/videobuf2-core.c | 6 +++--- include/media/videobuf2-core.h | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/media/common/videobuf2/videobuf2-core.c b/drivers/medi= a/common/videobuf2/videobuf2-core.c index adf668b213c2..8a2b8156e9da 100644 --- a/drivers/media/common/videobuf2/videobuf2-core.c +++ b/drivers/media/common/videobuf2/videobuf2-core.c @@ -2990,7 +2990,7 @@ 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, +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; @@ -3154,14 +3154,14 @@ 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, +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, +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, diff --git a/include/media/videobuf2-core.h b/include/media/videobuf2-core.h index 4424d481d7f7..bf20bcb1d366 100644 --- a/include/media/videobuf2-core.h +++ b/include/media/videobuf2-core.h @@ -1093,7 +1093,7 @@ __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, +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. @@ -1103,7 +1103,7 @@ 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, +ssize_t vb2_write(struct vb2_queue *q, const char __user *data, size_t cou= nt, loff_t *ppos, int nonblock); =20 /** --=20 2.39.5