Hi folks,
I just spent a very long time debugging a random kernel panic that was
coming from some sort of memory scribbling in our ionic driver, and
found the culprit in the kcompat.h code that we've borrowed from Intel
drivers. I thought I'd let you know before someone else hit this.
You'll probably want to check this in all your out-of-tree drivers.
Thanks for making this chunk of code available to the world. Here's the
world giving back to you.
Cheers,
sln
kcompat: add parens to devm_kcalloc macro
The macro in kcompat for devm_kcalloc() uses its parameters in
a multiplication in a call to devm_kzalloc(), but didn't protect
those parameters with ()'s. This caused havoc and several days
debugging a random kernel panic when one parameter was essentially
a + b: the resulting order of operations didn't allocate the
expected amount of memory and we ended up scribbling over random
other objects, causing great pain, chaos, and gnashing of teeth.
Signed-off-by: Shannon Nelson <snel...@pensando.io>
diff --git a/platform/drivers/linux/eth/ionic/kcompat.h
b/platform/drivers/linux/eth/ionic/kcompat.h
index 12c4361d2a..a87428b4e6 100644
--- a/platform/drivers/linux/eth/ionic/kcompat.h
+++ b/platform/drivers/linux/eth/ionic/kcompat.h
@@ -5003,7 +5003,7 @@ static inline struct pci_dev
*pci_upstream_bridge(struct pci_dev *dev)
#if ( LINUX_VERSION_CODE > KERNEL_VERSION(2,6,20) )
#define devm_kcalloc(dev, cnt, size, flags) \
- devm_kzalloc(dev, cnt * size, flags)
+ devm_kzalloc(dev, (cnt) * (size), flags)
#endif /* > 2.6.20 */
#if (!(RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(7,2)))
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel Ethernet, visit
https://forums.intel.com/s/topic/0TO0P00000018NbWAI/intel-ethernet