• J
    Net, USB, Option, hso: Do not dereference NULL pointer · 5b89db0e
    Jesper Juhl 提交于
    In drivers/net/usb/hso.c::hso_create_bulk_serial_device() we have this
    code:
    ...
    	serial = kzalloc(sizeof(*serial), GFP_KERNEL);
    	if (!serial)
    		goto exit;
    ...
    exit:
    	hso_free_tiomget(serial);
    ...
    hso_free_tiomget() directly dereferences its argument, which in the
    example above is a NULL pointer, ouch.
    I could just add a 'if (serial)' test at the 'exit' label, but since most
    freeing functions in the kernel accept NULL pointers (and it seems like
    this was also assumed here) I opted to instead change 'hso_free_tiomget()'
    so that it is safe to call it with a NULL argument. I also modified the
    function to get rid of a pointles conditional before the call to
    'usb_free_urb()' since that function already tests for NULL itself -
    besides fixing the NULL deref this change also buys us a few bytes in
    size.
    Before:
    $ size drivers/net/usb/hso.o
       text    data     bss     dec     hex filename
      32200     592    9960   42752    a700 drivers/net/usb/hso.o
    After:
    $ size drivers/net/usb/hso.o
       text    data     bss     dec     hex filename
      32196     592    9960   42748    a6fc drivers/net/usb/hso.o
    Signed-off-by: NJesper Juhl <jj@chaosbits.net>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    5b89db0e
hso.c 85.2 KB