lkml.org 
[lkml]   [2009]   [Dec]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[Regression, 2.6.33-rc1->current git] NULL pointer in usb_serial_probe() introduced by the recent kfifo changes
    Date
    Hi,

    Something like the patch below is necessary to fix a new NULL pointer deref
    in usb_serial_probe() that appeared after the recent kfifo changes (in short,
    the kfifo changes modified the semantics of kfifo_alloc() that
    usb_serial_probe() reiled on).

    Thanks,
    Rafael

    ---
    drivers/usb/serial/usb-serial.c | 10 +++++++++-
    1 file changed, 9 insertions(+), 1 deletion(-)

    Index: linux-2.6/drivers/usb/serial/usb-serial.c
    ===================================================================
    --- linux-2.6.orig/drivers/usb/serial/usb-serial.c
    +++ linux-2.6/drivers/usb/serial/usb-serial.c
    @@ -595,8 +595,10 @@ static void port_release(struct device *
    usb_free_urb(port->write_urb);
    usb_free_urb(port->interrupt_in_urb);
    usb_free_urb(port->interrupt_out_urb);
    - if (!IS_ERR(port->write_fifo) && port->write_fifo)
    + if (port->write_fifo) {
    kfifo_free(port->write_fifo);
    + kfree(port->write_fifo);
    + }
    kfree(port->bulk_in_buffer);
    kfree(port->bulk_out_buffer);
    kfree(port->interrupt_in_buffer);
    @@ -939,6 +941,12 @@ int usb_serial_probe(struct usb_interfac
    dev_err(&interface->dev, "No free urbs available\n");
    goto probe_error;
    }
    + port->write_fifo = kzalloc(sizeof(struct kfifo), GFP_KERNEL);
    + if (!port->write_fifo) {
    + dev_err(&interface->dev,
    + "Couldn't allocate write_fifo\n");
    + goto probe_error;
    + }
    if (kfifo_alloc(port->write_fifo, PAGE_SIZE, GFP_KERNEL))
    goto probe_error;
    buffer_size = le16_to_cpu(endpoint->wMaxPacketSize);

    \
     
     \ /
      Last update: 2009-12-23 02:53    [W:0.022 / U:59.208 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site