Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753757AbdFMSI6 (ORCPT ); Tue, 13 Jun 2017 14:08:58 -0400 Received: from mail-yw0-f169.google.com ([209.85.161.169]:33079 "EHLO mail-yw0-f169.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752489AbdFMSI4 (ORCPT ); Tue, 13 Jun 2017 14:08:56 -0400 MIME-Version: 1.0 In-Reply-To: References: From: Andrey Konovalov Date: Tue, 13 Jun 2017 20:08:54 +0200 Message-ID: Subject: Re: gadgetfs: how to wait for USB device initialization? To: Tal Shorer Cc: Felipe Balbi , Greg Kroah-Hartman , Alan Stern , Kees Cook , Andrew Morton , Elena Reshetova , USB list , LKML , syzkaller , Dmitry Vyukov , Kostya Serebryany Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1270 Lines: 33 On Tue, Jun 13, 2017 at 6:22 PM, Tal Shorer wrote: > On Tue, Jun 13, 2017 at 7:02 PM, Tal Shorer wrote: >> On Tue, Jun 13, 2017 at 3:21 PM, Andrey Konovalov wrote: >>> Hi! >>> >>> I'm trying to use gadgetfs to fuzz USB device drivers by simply >>> connecting random devices for now. >>> >>> What I want to achieve right now is the following: >>> >>> 1. mount gadgetfs >>> 2. emulate connection of a new USB device >>> 3. wait for the device to finish initializing >>> 4. unmount gadgetfs >>> 5. goto 1 >>> >>> The question is how do I wait for the device to finish initializing >>> (the corresponding USB driver to finish probing?) before unmounting >>> gadgetfs? As I understand, when I write device description to >>> "/dev/gadget/dummy_udc" the initialization happens asynchronously >>> after writing is done. >>> >> >> You can use inotify on the state file inside a udc's sysfs directory. >> It's awesome like that. >> Here's a sample code that doesn't do any cleanups because I'm lazy: >> https://gist.github.com/talshorer/61be1bc3472cc2a7b4866b9bd5a239ca > And I forgot usage >: > ./wait_udc_configured /sys/devices/platform/dummy_udc.0/udc/dummy_udc.0/state Hi Tal, I will try this, thanks!