From: Andrey Konovalov <firstname.lastname@example.org> To: Greg Kroah-Hartman <email@example.com> Cc: Alan Stern <firstname.lastname@example.org>, "Gustavo A. R. Silva" <email@example.com>, USB list <firstname.lastname@example.org>, Dmitry Vyukov <email@example.com>, Kostya Serebryany <firstname.lastname@example.org>, Alexander Potapenko <email@example.com> Subject: Re: USB fuzzing with syzbot Date: Thu, 25 Apr 2019 14:44:11 +0200 Message-ID: <CAAeHK+xGGfK03UqNKhXsogTer3dBNbvEEOk4y3dN0Y-xkcOz8Q@mail.gmail.com> (raw) In-Reply-To: <CAAeHK+zOg=SKynp85f9xQm56V1NzDrECaxBBu8UcBj_HBj9=+Q@mail.gmail.com> On Wed, Apr 24, 2019 at 6:05 PM Andrey Konovalov <firstname.lastname@example.org> wrote: > > On Fri, Apr 19, 2019 at 10:35 AM Greg Kroah-Hartman > <email@example.com> wrote: > > > > > 2. Is there an easy way to figure out which config options enable > > > drivers reachable over USB? > > > > Looking for all options that depend on USB is a good start. > > > > > Right now our kernel config is based on one of the Debian kernel > > > configs, that supposedly enables enough relevant USB drivers. At the > > > same time it enables a lot of other unnecessary stuff, which makes the > > > kernel big and long to compile. Ideally, we would to have a way to > > > auto-generate a kernel config that enables all the relevant (enabled > > > by at least one of the distros) USB drivers. I've looked at whether > > > it's possible to figure out which particular options in some kernel > > > config are related to USB, but it seems that neither the option names, > > > nor the way they are grouped in the config file, are representative > > > enough. > > > > Yeah, it's hard to just carve out this type of configuration, but here's > > what I have done in the past to try to be sure I enabled all USB drivers > > in my kernel configuration. > > > > First, start with a "minimally working configuration" by running: > > make localmodconfig > > on a working system, with the needed modules for booting and operating > > properly already loaded. > > > > That gives you a .config file that should take only minutes to build, > > compared to much longer for the normal distro configuration (also be > > sure to disable some debugging options so you don't spend extra time > > building and stripping symbols). > > > > Boot and make sure that configuration works. > > > > Then, take that .config and do: > > - disable USB from the configuration by deleting the: > > CONFIG_USB_SUPPORT=y > > option from your .config > > - run 'make oldconfig' to disable all USB drivers > > - turn USB back on by setting CONFIG_USB_SUPPORT=y back on in > > your .config > > - run 'make oldconfig' and answer 'y' or 'm' to all of the > > driver options you are presented with. > > > > That usually catches almost all of them. Sometimes you need to make > > sure you have some other subsystem enabled (like SCSI), but odds are, if > > you start with a "normally stripped down" configuration that works, you > > should be fine. > > I suspect that make localmodconfig (+ switching CONFIG_USB_SUPPORT off > and on) would likely include a lot of stuff that we don't need (there > are many options that are =y, but not related to USB at all), but it > definitely sounds better than what I have right now (converting almost > all =m into =y). I'll give it a shot, thanks! I've tried this and unfortunately it doesn't work as desired. The reason is that localmodconfig will only enable options for the modules that are currently loaded, and if a module that some USB driver depends on is not loaded, then this driver won't be enabled after yes | make oldconfig. For example my machine didn't have the cfg80211 module loaded, and thus e.g. CONFIG_AT76C50X_USB didn't get enabled after oldconfig. However when I plug in a wireless USB adapter, cfg80211 gets loaded together with the USB driver for that adapter. I guess the same applies to other kinds of dependency modules (e.g. bluetooth). So this would only work if all the dependency modules are already loaded.
next prev parent reply index Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-04-17 16:33 Andrey Konovalov 2019-04-19 8:35 ` Greg Kroah-Hartman 2019-04-19 14:39 ` Alan Stern 2019-04-24 16:09 ` Andrey Konovalov 2019-04-24 16:05 ` Andrey Konovalov 2019-04-25 12:44 ` Andrey Konovalov [this message] 2019-04-25 14:25 ` Greg Kroah-Hartman 2019-05-14 12:43 ` Andrey Konovalov 2019-08-13 13:06 ` Andrey Konovalov
Reply instructions: You may reply publically to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=CAAeHK+xGGfK03UqNKhXsogTer3dBNbvEEOk4y3dN0Y-xkcOz8Q@mail.gmail.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Linux-USB Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/linux-usb/0 linux-usb/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 linux-usb linux-usb/ https://lore.kernel.org/linux-usb \ firstname.lastname@example.org email@example.com public-inbox-index linux-usb Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.linux-usb AGPL code for this site: git clone https://public-inbox.org/ public-inbox