Re: [syzbot] [io-uring?] KASAN: null-ptr-deref Write in sys_io_uring_register
From: Matthew Wilcox
Date: Wed Dec 04 2024 - 11:25:38 EST
On Wed, Dec 04, 2024 at 09:17:27AM -0700, Jens Axboe wrote:
> > XA_STATE(xas, xa, index);
> > - return xas_result(&xas, xas_store(&xas, NULL));
> > + return xas_result(&xas, xa_zero_to_null(xas_store(&xas, NULL)));
> > }
> > EXPORT_SYMBOL(__xa_erase);
> >
> > This would explain deletion of a reserved entry returning
> > `XA_ZERO_ENTRY` rather than `NULL`.
>
> Yep this works.
>
> > My apologies for this breakage. Should I send a new version? A new
> > "fixes" patch?
>
> Since it seems quite drastically broken, and since it looks like Andrew
> is holding it, seems like the best course of action would be to have it
> folded with the existing patch.
... and please include an addition to the test-suite that would catch
this bug.
Wait, why doesn't this one catch it? You did run the test-suite, right?
/* xa_insert treats it as busy */
XA_BUG_ON(xa, xa_reserve(xa, 12345678, GFP_KERNEL) != 0);
XA_BUG_ON(xa, xa_insert(xa, 12345678, xa_mk_value(12345678), 0) !=
-EBUSY);
XA_BUG_ON(xa, xa_empty(xa));
XA_BUG_ON(xa, xa_erase(xa, 12345678) != NULL);
XA_BUG_ON(xa, !xa_empty(xa));