|
@@ -3433,6 +3433,7 @@ done:
|
|
static void ffs_closed(struct ffs_data *ffs)
|
|
static void ffs_closed(struct ffs_data *ffs)
|
|
{
|
|
{
|
|
struct ffs_dev *ffs_obj;
|
|
struct ffs_dev *ffs_obj;
|
|
|
|
+ struct f_fs_opts *opts;
|
|
|
|
|
|
ENTER();
|
|
ENTER();
|
|
ffs_dev_lock();
|
|
ffs_dev_lock();
|
|
@@ -3446,8 +3447,13 @@ static void ffs_closed(struct ffs_data *ffs)
|
|
if (ffs_obj->ffs_closed_callback)
|
|
if (ffs_obj->ffs_closed_callback)
|
|
ffs_obj->ffs_closed_callback(ffs);
|
|
ffs_obj->ffs_closed_callback(ffs);
|
|
|
|
|
|
- if (!ffs_obj->opts || ffs_obj->opts->no_configfs
|
|
|
|
- || !ffs_obj->opts->func_inst.group.cg_item.ci_parent)
|
|
|
|
|
|
+ if (ffs_obj->opts)
|
|
|
|
+ opts = ffs_obj->opts;
|
|
|
|
+ else
|
|
|
|
+ goto done;
|
|
|
|
+
|
|
|
|
+ if (opts->no_configfs || !opts->func_inst.group.cg_item.ci_parent
|
|
|
|
+ || !atomic_read(&opts->func_inst.group.cg_item.ci_kref.refcount))
|
|
goto done;
|
|
goto done;
|
|
|
|
|
|
unregister_gadget_item(ffs_obj->opts->
|
|
unregister_gadget_item(ffs_obj->opts->
|