Luis, On Tue, May 02, 2017 at 01:49:12AM -0700, Luis R. Rodriguez wrote: > > diff --git a/lib/test_driver_data.c b/lib/test_driver_data.c > new file mode 100644 > index 000000000000..488cc6e9eed4 > --- /dev/null > +++ b/lib/test_driver_data.c
... > +static int trigger_config_sync(struct driver_data_test_device *test_dev) > +{ > + struct test_config *config = &test_dev->config; > + int ret; > + const struct driver_data_req_params req_params_default = { > + DRIVER_DATA_DEFAULT_SYNC_REQS(config_sync_req_cb, test_dev, > + DRIVER_DATA_REQ_OPTIONAL | > + DRIVER_DATA_REQ_KEEP) Are these flags always on? > +void free_test_dev_driver_data(struct driver_data_test_device *test_dev) > +{ > + kfree_const(test_dev->misc_dev.name); > + test_dev->misc_dev.name = NULL; > + vfree(test_dev); > + test_dev = NULL; > + driver_data_config_free(test_dev); Removing this test module fails. The last three lines should be: driver_data_config_free(test_dev); vfree(test_dev); > +} > + > +void unregister_test_dev_driver_data(struct driver_data_test_device > *test_dev) > +{ > + wait_for_completion_timeout(&test_dev->request_complete, 5 * HZ); > + dev_info(test_dev->dev, "removing interface\n"); > + misc_deregister(&test_dev->misc_dev); > + kfree(&test_dev->misc_dev.name); Don't need this kfree(). Thanks, -Takahiro AKASHI