-----Original Message----- From: David Laight David.Laight@ACULAB.COM Sent: Thursday, February 16, 2023 6:11 PM To: Manish Chopra manishc@marvell.com; kuba@kernel.org Cc: netdev@vger.kernel.org; Ariel Elior aelior@marvell.com; stable@vger.kernel.org; Bhaskar Upadhaya bupadhaya@marvell.com; David S . Miller davem@davemloft.net Subject: [EXT] RE: [PATCH net] qede: fix interrupt coalescing configuration
External Email
From: Manish Chopra
Sent: 16 February 2023 11:55
On default driver load device gets configured with unexpected higher interrupt coalescing values instead of default expected values as memory allocated from krealloc() is not supposed to be zeroed out and may contain garbage values.
Fix this by allocating the memory of required size first with kcalloc() and then use krealloc() to resize and preserve the contents across down/up of the interface.
Doesn't any extra memory allocated by krealloc() need to be zerod ?
Hi David,
Driver will not attempt to allocate the size (using krealloc()) which is greater than the size initially allocated by kcalloc() ever.
Thanks, Manish
David
Signed-off-by: Manish Chopra manishc@marvell.com Fixes: b0ec5489c480 ("qede: preserve per queue stats across up/down of interface") Cc: stable@vger.kernel.org Cc: Bhaskar Upadhaya bupadhaya@marvell.com Cc: David S. Miller davem@davemloft.net Link: https://urldefense.proofpoint.com/v2/url?u=https-3A__bugzilla.redhat.c om_show-5Fbug.cgi-3Fid-
3D2160054&d=DwIFaQ&c=nKjWec2b6R0mOyPaz7xtfQ&r=b
MTgx2X48QVXyXOEL8ALyI4dsWoR-m74c5n3d-
ruJI8&m=yxUlxYqV9xzhL4ZcgCffdrxKT
6qVQqXE6JdE28XtyOwxInnkbtBiM1lxjYJCI0Wm&s=uz96PudLovEFy3W0_IpBM wBWwGkl
88SQR0pJXP0k-5I&e= Signed-off-by: Alok Prasad palok@marvell.com Signed-off-by: Ariel Elior aelior@marvell.com
drivers/net/ethernet/qlogic/qede/qede_main.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/qlogic/qede/qede_main.c b/drivers/net/ethernet/qlogic/qede/qede_main.c index 953f304b8588..af39513db1ba 100644 --- a/drivers/net/ethernet/qlogic/qede/qede_main.c +++ b/drivers/net/ethernet/qlogic/qede/qede_main.c @@ -970,8 +970,15 @@ static int qede_alloc_fp_array(struct qede_dev
*edev)
goto err;
}
- mem = krealloc(edev->coal_entry, QEDE_QUEUE_CNT(edev) *
sizeof(*edev->coal_entry), GFP_KERNEL);
- if (!edev->coal_entry) {
mem = kcalloc(QEDE_MAX_RSS_CNT(edev),
sizeof(*edev->coal_entry), GFP_KERNEL);
- } else {
mem = krealloc(edev->coal_entry,
QEDE_QUEUE_CNT(edev) * sizeof(*edev-
coal_entry),
GFP_KERNEL);
- }
- if (!mem) { DP_ERR(edev, "coalesce entry allocation failed\n"); kfree(edev->coal_entry);
-- 2.27.0
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)