]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
media: usb: hdpvr: disable zero-length read messages
authorWolfram Sang <wsa+renesas@sang-engineering.com>
Thu, 22 May 2025 08:09:54 +0000 (10:09 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 20 Aug 2025 16:41:27 +0000 (18:41 +0200)
[ Upstream commit b5ae5a79825ba8037b0be3ef677a24de8c063abf ]

This driver passes the length of an i2c_msg directly to
usb_control_msg(). If the message is now a read and of length 0, it
violates the USB protocol and a warning will be printed. Enable the
I2C_AQ_NO_ZERO_LEN_READ quirk for this adapter thus forbidding 0-length
read messages altogether.

Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/media/usb/hdpvr/hdpvr-i2c.c

index 070559b01b01b81c7acb40dd4b57adeebdd7b48b..54956a8ff15e86b1bbaf83a3574d5c62fe89d1a0 100644 (file)
@@ -165,10 +165,16 @@ static const struct i2c_algorithm hdpvr_algo = {
        .functionality = hdpvr_functionality,
 };
 
+/* prevent invalid 0-length usb_control_msg */
+static const struct i2c_adapter_quirks hdpvr_quirks = {
+       .flags = I2C_AQ_NO_ZERO_LEN_READ,
+};
+
 static const struct i2c_adapter hdpvr_i2c_adapter_template = {
        .name   = "Hauppauge HD PVR I2C",
        .owner  = THIS_MODULE,
        .algo   = &hdpvr_algo,
+       .quirks = &hdpvr_quirks,
 };
 
 static int hdpvr_activate_ir(struct hdpvr_device *dev)