On Tue, 2019-11-05 at 16:49 +0100, Toke Høiland-Jørgensen wrote: > The FQ implementation used by mac80211 allocates memory using kmalloc(), > which can fail; and Johannes reported that this actually happens in > practice. > > To avoid this, switch the allocation to kvmalloc() instead; this also > brings fq_impl in line with all the FQ qdiscs. > > Fixes: 557fc4a09803 ("fq: add fair queuing framework") > Reported-by: Johannes Berg <johannes@xxxxxxxxxxxxxxxx> > Signed-off-by: Toke Høiland-Jørgensen <toke@xxxxxxxxxx> > --- > include/net/fq_impl.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/include/net/fq_impl.h b/include/net/fq_impl.h > index 107c0d700ed6..d3873db91c71 100644 > --- a/include/net/fq_impl.h > +++ b/include/net/fq_impl.h > @@ -313,7 +313,7 @@ static int fq_init(struct fq *fq, int flows_cnt) > fq->limit = 8192; > fq->memory_limit = 16 << 20; /* 16 MBytes */ > > - fq->flows = kcalloc(fq->flows_cnt, sizeof(fq->flows[0]), GFP_KERNEL); > + fq->flows = kvcalloc(fq->flows_cnt, sizeof(fq->flows[0]), GFP_KERNEL); You need a corresponding kvfree(), no? johannes