aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/target/target_core_file.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/target/target_core_file.c')
-rw-r--r--drivers/target/target_core_file.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/target/target_core_file.c b/drivers/target/target_core_file.c
index e921948415c7..24cf11d9e50a 100644
--- a/drivers/target/target_core_file.c
+++ b/drivers/target/target_core_file.c
@@ -237,13 +237,17 @@ static void fd_dev_call_rcu(struct rcu_head *p)
237 237
238static void fd_free_device(struct se_device *dev) 238static void fd_free_device(struct se_device *dev)
239{ 239{
240 call_rcu(&dev->rcu_head, fd_dev_call_rcu);
241}
242
243static void fd_destroy_device(struct se_device *dev)
244{
240 struct fd_dev *fd_dev = FD_DEV(dev); 245 struct fd_dev *fd_dev = FD_DEV(dev);
241 246
242 if (fd_dev->fd_file) { 247 if (fd_dev->fd_file) {
243 filp_close(fd_dev->fd_file, NULL); 248 filp_close(fd_dev->fd_file, NULL);
244 fd_dev->fd_file = NULL; 249 fd_dev->fd_file = NULL;
245 } 250 }
246 call_rcu(&dev->rcu_head, fd_dev_call_rcu);
247} 251}
248 252
249static int fd_do_rw(struct se_cmd *cmd, struct file *fd, 253static int fd_do_rw(struct se_cmd *cmd, struct file *fd,
@@ -826,6 +830,7 @@ static const struct target_backend_ops fileio_ops = {
826 .detach_hba = fd_detach_hba, 830 .detach_hba = fd_detach_hba,
827 .alloc_device = fd_alloc_device, 831 .alloc_device = fd_alloc_device,
828 .configure_device = fd_configure_device, 832 .configure_device = fd_configure_device,
833 .destroy_device = fd_destroy_device,
829 .free_device = fd_free_device, 834 .free_device = fd_free_device,
830 .parse_cdb = fd_parse_cdb, 835 .parse_cdb = fd_parse_cdb,
831 .set_configfs_dev_params = fd_set_configfs_dev_params, 836 .set_configfs_dev_params = fd_set_configfs_dev_params,