• J
    ns83820: Avoid bad pointer deref in ns83820_init_one(). · 1956cc52
    Jesper Juhl 提交于
    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: NJesper Juhl <jj@chaosbits.net>
    Signed-off-by: NBenjamin LaHaise <bcrl@kvack.org>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    1956cc52
ns83820.c 61.9 KB