It is known that dev_vdbg() macro can accept NULL or non-NULL dev pointer. Add a struct device *dev member in struct ffs_data, set it to NULL before binding or after unbinding to a usb_gadget, set it reference of usb_gadget ->dev when bind success. Then it can help replace private pr_vdebug() to dev_vdbg() consistently. Signed-off-by: Linyu Yuan <quic_linyyuan@xxxxxxxxxxx> --- v3: new patch in this version drivers/usb/gadget/function/f_fs.c | 3 +++ drivers/usb/gadget/function/u_fs.h | 1 + 2 files changed, 4 insertions(+) diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c index a4051c8..25461f1 100644 --- a/drivers/usb/gadget/function/f_fs.c +++ b/drivers/usb/gadget/function/f_fs.c @@ -1722,6 +1722,7 @@ static struct ffs_data *ffs_data_new(const char *dev_name) return NULL; } + ffs->dev = NULL; refcount_set(&ffs->ref, 1); atomic_set(&ffs->opened, 0); ffs->state = FFS_READ_DESCRIPTORS; @@ -1831,6 +1832,7 @@ static int functionfs_bind(struct ffs_data *ffs, struct usb_composite_dev *cdev) } ffs->gadget = cdev->gadget; + ffs->dev = &cdev->gadget->dev; ffs_data_get(ffs); return 0; } @@ -1843,6 +1845,7 @@ static void functionfs_unbind(struct ffs_data *ffs) mutex_lock(&ffs->mutex); usb_ep_free_request(ffs->gadget->ep0, ffs->ep0req); ffs->ep0req = NULL; + ffs->dev = NULL; ffs->gadget = NULL; clear_bit(FFS_FL_BOUND, &ffs->flags); mutex_unlock(&ffs->mutex); diff --git a/drivers/usb/gadget/function/u_fs.h b/drivers/usb/gadget/function/u_fs.h index 4b3365f..c5f6167 100644 --- a/drivers/usb/gadget/function/u_fs.h +++ b/drivers/usb/gadget/function/u_fs.h @@ -146,6 +146,7 @@ enum ffs_setup_state { struct ffs_data { struct usb_gadget *gadget; + struct device *dev; /* * Protect access read/write operations, only one read/write -- 2.7.4