On Mon, 2020-08-10 at 02:38 +0000, Xu Wang wrote:Yes, the dump_stack() tells you which function had the allocation failure, but since there are multiple allocation operations in this same function, I find these helpful in knowing quickly which one of the allocations failed, without having to track down the symbols and source for whatever distro's kernel this might have happened in.
A multiplication for the size determination of a memory allocation[]
indicated that an array data structure should be processed.
Thus use the corresponding function "devm_kcalloc".
diff --git a/drivers/net/ethernet/pensando/ionic/ionic_lif.c b/drivers/net/ethernet/pensando/ionic/ionic_lif.c[]
@@ -412,7 +412,7 @@ static int ionic_qcq_alloc(struct ionic_lif *lif, unsigned int type,You could also remove these unnecessary allocation error messages.
new->flags = flags;
- new->q.info = devm_kzalloc(dev, sizeof(*new->q.info) * num_descs,
+ new->q.info = devm_kcalloc(dev, num_descs, sizeof(*new->q.info),
GFP_KERNEL);
if (!new->q.info) {
netdev_err(lif->netdev, "Cannot allocate queue info\n");
There is an existing dump_stack() on allocation failure.