• Jesper Juhl's avatar
    ns83820: Avoid bad pointer deref in ns83820_init_one(). · 1956cc52
    Jesper Juhl authored
    In drivers/net/ns83820.c::ns83820_init_one() we dynamically allocate
    memory via alloc_etherdev(). We then call PRIV() on the returned storage
    which is 'return netdev_priv()'. netdev_priv() takes the pointer it is
    passed and adds 'ALIGN(sizeof(struct net_device), NETDEV_ALIGN)' to it and
    returns it. Then we test the resulting pointer for NULL, which it is
    unlikely to be at this point, and later dereference it. This will go bad
    if alloc_etherdev() actually returned NULL.
    
    This patch reworks the code slightly so that we test for a NULL pointer
    (and return -ENOMEM) directly after calling alloc_etherdev().
    Signed-off-by: default avatarJesper Juhl <jj@chaosbits.net>
    Signed-off-by: default avatarBenjamin LaHaise <bcrl@kvack.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    1956cc52
ns83820.c 61.9 KB