lkml.org 
[lkml]   [2021]   [Jul]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 206/215] media: rtl28xxu: fix zero-length control request
    Date
    From: Johan Hovold <johan@kernel.org>

    commit 25d5ce3a606a1eb23a9265d615a92a876ff9cb5f upstream.

    The direction of the pipe argument must match the request-type direction
    bit or control requests may fail depending on the host-controller-driver
    implementation.

    Control transfers without a data stage are treated as OUT requests by
    the USB stack and should be using usb_sndctrlpipe(). Failing to do so
    will now trigger a warning.

    Fix the zero-length i2c-read request used for type detection by
    attempting to read a single byte instead.

    Reported-by: syzbot+faf11bbadc5a372564da@syzkaller.appspotmail.com
    Fixes: d0f232e823af ("[media] rtl28xxu: add heuristic to detect chip type")
    Cc: stable@vger.kernel.org # 4.0
    Cc: Antti Palosaari <crope@iki.fi>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/media/usb/dvb-usb-v2/rtl28xxu.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    --- a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
    +++ b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
    @@ -612,8 +612,9 @@ static int rtl28xxu_read_config(struct d
    static int rtl28xxu_identify_state(struct dvb_usb_device *d, const char **name)
    {
    struct rtl28xxu_dev *dev = d_to_priv(d);
    + u8 buf[1];
    int ret;
    - struct rtl28xxu_req req_demod_i2c = {0x0020, CMD_I2C_DA_RD, 0, NULL};
    + struct rtl28xxu_req req_demod_i2c = {0x0020, CMD_I2C_DA_RD, 1, buf};

    dev_dbg(&d->intf->dev, "\n");


    \
     
     \ /
      Last update: 2021-07-15 21:04    [W:2.811 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site