Re: usb/core: warning in usb_create_ep_devs/sysfs_create_dir_ns

From: Alan Stern
Date: Mon Dec 12 2016 - 17:04:38 EST


On Mon, 12 Dec 2016, Alan Stern wrote:

> On Mon, 12 Dec 2016, Dmitry Vyukov wrote:
>
> > On Mon, Dec 12, 2016 at 10:05 PM, Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote:
> > > On Mon, 12 Dec 2016, Andrey Konovalov wrote:
> > >
> > >> Hi!
> > >>
> > >> While running the syzkaller fuzzer I've got the following error report.
> > >>
> > >> On commit 3c49de52d5647cda8b42c4255cf8a29d1e22eff5 (Dev 2).
> > >>
> > >> WARNING: CPU: 2 PID: 865 at fs/sysfs/dir.c:31 sysfs_warn_dup+0x8a/0xa0
> > >> gadgetfs: disconnected
> > >> sysfs: cannot create duplicate filename
> > >> '/devices/platform/dummy_hcd.0/usb2/2-1/2-1:64.0/ep_05'
> > >> Kernel panic - not syncing: panic_on_warn set ...
> > >
> > > I suppose we could check for USB devices that claim to have two
> > > endpoints with the same address. But is it really worthwhile? A
> > > kernel warning isn't so bad when you're dealing with buggy device
> > > firmware.
> >
> > We need a clear distinction between what is a bug in kernel source
> > code and what is incorrect user-space code. Otherwise no automated
> > testing is possible. WARNING means bug in kernel source code.
>
> I don't necessarily agree with that. Is it documented anywhere?
>
> > If it is
> > not a bug in kernel source code, then it must not produce a WARNING.

What about a memory allocation failure? The memory management part of
the kernel produces a WARNING message if an allocation fails and the
caller did not specify __GFP_NOWARN.

There is no way for a driver to guarantee that a memory allocation
request will succeed -- failure is always an option. But obviously
memory allocation failures are not bugs in the kernel.

Are you saying that mm/page_alloc.c:warn_alloc() should produce
something other than a WARNING?

Alan Stern