From: Al Viro Date: Fri, 22 Jan 2016 18:34:32 +0000 (-0500) Subject: orangefs: nothing should remain in request list and in hash X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=96acf9d65e70e0eb2716e3e46c45f4acb8256f1a;p=linux-beck.git orangefs: nothing should remain in request list and in hash ... otherwise some thread is running in .text that is about to be freed. Signed-off-by: Al Viro Signed-off-by: Mike Marshall --- diff --git a/fs/orangefs/orangefs-mod.c b/fs/orangefs/orangefs-mod.c index d0257f8b8cd3..bd9fbfe2ccee 100644 --- a/fs/orangefs/orangefs-mod.c +++ b/fs/orangefs/orangefs-mod.c @@ -236,8 +236,6 @@ out: static void __exit orangefs_exit(void) { int i = 0; - struct orangefs_kernel_op_s *cur_op = NULL; - gossip_debug(GOSSIP_INIT_DEBUG, "orangefs: orangefs_exit called\n"); unregister_filesystem(&orangefs_fs_type); @@ -245,27 +243,9 @@ static void __exit orangefs_exit(void) orangefs_sysfs_exit(); fsid_key_table_finalize(); orangefs_dev_cleanup(); - /* clear out all pending upcall op requests */ - spin_lock(&orangefs_request_list_lock); - while (!list_empty(&orangefs_request_list)) { - cur_op = list_entry(orangefs_request_list.next, - struct orangefs_kernel_op_s, - list); - list_del(&cur_op->list); - gossip_debug(GOSSIP_INIT_DEBUG, - "Freeing unhandled upcall request type %d\n", - cur_op->upcall.type); - op_release(cur_op); - } - spin_unlock(&orangefs_request_list_lock); - + BUG_ON(!list_empty(&orangefs_request_list)); for (i = 0; i < hash_table_size; i++) - while (!list_empty(&htable_ops_in_progress[i])) { - cur_op = list_entry(htable_ops_in_progress[i].next, - struct orangefs_kernel_op_s, - list); - op_release(cur_op); - } + BUG_ON(!list_empty(&htable_ops_in_progress[i])); kiocb_cache_finalize(); orangefs_inode_cache_finalize();