Re: Preemptible idr_alloc() in QRTR code

From: Bjorn Andersson
Date: Tue Jan 26 2021 - 19:19:38 EST


On Tue 26 Jan 10:21 CST 2021, Mark Rutland wrote:

> On Tue, Jan 26, 2021 at 02:58:33PM +0000, Matthew Wilcox wrote:
> > On Tue, Jan 26, 2021 at 10:47:34AM +0000, Mark Rutland wrote:
> > > Hi,
> > >
> > > When fuzzing arm64 with Syzkaller, I'm seeing some splats where
> > > this_cpu_ptr() is used in the bowels of idr_alloc(), by way of
> > > radix_tree_node_alloc(), in a preemptible context:
> >
> > I sent a patch to fix this last June. The maintainer seems to be
> > under the impression that I care an awful lot more about their
> > code than I do.
> >
> > https://lore.kernel.org/netdev/20200605120037.17427-1-willy@xxxxxxxxxxxxx/
>
> Ah; I hadn't spotted the (glaringly obvious) GFP_ATOMIC abuse, thanks
> for the pointer, and sorry for the noise.
>

I'm afraid this isn't as obvious to me as it is to you. Are you saying
that one must not use GFP_ATOMIC in non-atomic contexts?


That said, glancing at the code I'm puzzled to why it would use
GFP_ATOMIC.

> It looks like Eric was after a fix that trivially backported to v4.7
> (and hence couldn't rely on xarray) but instead it just got left broken
> for months. :/
>
> Bjorn, is this something you care about? You seem to have the most
> commits to the file, and otherwise the official maintainer is Dave
> Miller per get_maintainer.pl.
>

I certainly care about qrtr working and remember glancing at Matthew's
patch, but seems like I never found time to properly review it.

> It is very tempting to make the config option depend on BROKEN...
>

I hear you and that would be bad, so I'll make sure to take a proper
look at this and Matthew's patch.

Thanks,
Bjorn