PCI/AER: Queue one GHES event, not several uninitialized ones
authorYanjiang Jin <yanjiang.jin@hxt-semitech.com>
Fri, 14 Dec 2018 17:29:37 +0000 (11:29 -0600)
committerBjorn Helgaas <bhelgaas@google.com>
Fri, 14 Dec 2018 17:29:37 +0000 (11:29 -0600)
ecae65e133f2 ("PCI/AER: Use kfifo_in_spinlocked() to insert locked
elements") replaced kfifo_put() with kfifo_in_spinlocked(), but passed the
*size* of the queue entry, where kfifo_in_spinlocked() expects the *number*
of entries to be copied.

We want to insert only one element into kfifo, not "sizeof(entry) = 16".
Without this patch, we would get 15 uninitialized elements.

Fixes: ecae65e133f2 ("PCI/AER: Use kfifo_in_spinlocked() to insert locked elements")
Signed-off-by: Yanjiang Jin <yanjiang.jin@hxt-semitech.com>
[bhelgaas: changelog]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Keith Busch <keith.busch@intel.com>
drivers/pci/pcie/aer.c

index a90a9194ac4a8304df3076cb40dc32d8bc0605c7..fed29de783e00ff554e2e0c8e0e0849bf70d6c35 100644 (file)
@@ -1064,7 +1064,7 @@ void aer_recover_queue(int domain, unsigned int bus, unsigned int devfn,
                .regs           = aer_regs,
        };
 
-       if (kfifo_in_spinlocked(&aer_recover_ring, &entry, sizeof(entry),
+       if (kfifo_in_spinlocked(&aer_recover_ring, &entry, 1,
                                 &aer_recover_ring_lock))
                schedule_work(&aer_recover_work);
        else