Подробности

[В начало]

Проблема в реализации № L0014

Краткое описание

drivers/net/3c507.c: Разыменование нулевого указателя

Подробное описание

В драйвере drivers/net/3c507.c в функции Iirqreturn_t el16_interrupt может быть разыменование нулевого указателя: Путь:

  • 1. Если в строке 555 dev = NULL тогда мы идем на строку 556
  • 2. В строке 556 мы получаем разыменовани енулевого указателя, поскольку pr_err вызывает "dev->name" в третьем параметре.
  •  555        if (dev == NULL) {
     556                pr_err("%s: net_interrupt(): irq %d for unknown device.
    
    ",
     557                        dev->name, irq);
     558                return IRQ_NONE;
     559        }
    

    Способы устранения

    diff --git a/./0000/drivers/net/3c507.c b/./moder/drivers/net/3c507.c
    index fbc2311..3bfb3dd 100644
    --- a/./0000/drivers/net/3c507.c
    +++ b/./moder/drivers/net/3c507.c
    @@ -552,12 +552,6 @@ static irqreturn_t el16_interrupt(int irq, void *dev_id)
            ushort ack_cmd = 0;
            void __iomem *shmem;
     
    -       if (dev == NULL) {
    -               pr_err("%s: net_interrupt(): irq %d for unknown device.
    ",
    -                       dev->name, irq);
    -               return IRQ_NONE;
    -       }
    -
            ioaddr = dev->base_addr;
            lp = netdev_priv(dev);
            shmem = lp->base;
    

    Компонент

    linux-kernel 2.6.32

    Принято

    http://lkml.org/lkml/2009/12/21/120
    commit

    Статус

    Исправлено в kernel 2.6.35-rc1

    [В начало]