aboutsummaryrefslogtreecommitdiffstats
path: root/module/spl/spl-generic.c
diff options
context:
space:
mode:
authorOlaf Faaland <[email protected]>2017-03-13 10:37:10 -0700
committerBrian Behlendorf <[email protected]>2017-03-20 17:43:45 -0700
commitbf8abea4dade111bdf3aeae30bd4bd75d49aca70 (patch)
treea240d1c17e307cd821c3fe39eb8ec0db4919d500 /module/spl/spl-generic.c
parent9a054d54fb6772305fdbe0bb5b312cf051331726 (diff)
Linux 4.11 compat: remove stub for __put_task_struct
Before kernel 2.6.29 credentials were embedded in task_structs, and zfs had cases where one thread would need to refer to the credential of another thread, forcing it to take a hold on the foreign thread's task_struct to ensure it was not freed. Since 2.6.29, the credential has been moved out of the task_struct into a cred_t. In addition, the mainline kernel originally did not export __put_task_struct() but the RHEL5 kernel did, according to zfsonlinux/spl@e811949a570. As of 2.6.39 the mainline kernel exports it. There is no longer zfs code that takes or releases holds on a task_struct, and so there is no longer any reference to __put_task_struct(). This affects the linux 4.11 kernel because the prototype for __put_task_struct() is in a new include file (linux/sched/task.h) and so the config check failed to detect the exported symbol. Removing the unnecessary stub and corresponding config check. This works on kernels since the oldest one currently supported, 2.6.32 as shipped with Centos/RHEL. Reviewed-by: Chunwei Chen <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Olaf Faaland <[email protected]> Closes #608
Diffstat (limited to 'module/spl/spl-generic.c')
-rw-r--r--module/spl/spl-generic.c16
1 files changed, 0 insertions, 16 deletions
diff --git a/module/spl/spl-generic.c b/module/spl/spl-generic.c
index ce60963bd..a9445eb37 100644
--- a/module/spl/spl-generic.c
+++ b/module/spl/spl-generic.c
@@ -459,22 +459,6 @@ ddi_copyout(const void *from, void *to, size_t len, int flags)
}
EXPORT_SYMBOL(ddi_copyout);
-#ifndef HAVE_PUT_TASK_STRUCT
-/*
- * This is only a stub function which should never be used. The SPL should
- * never be putting away the last reference on a task structure so this will
- * not be called. However, we still need to define it so the module does not
- * have undefined symbol at load time. That all said if this impossible
- * thing does somehow happen PANIC immediately so we know about it.
- */
-void
-__put_task_struct(struct task_struct *t)
-{
- PANIC("Unexpectly put last reference on task %d\n", (int)t->pid);
-}
-EXPORT_SYMBOL(__put_task_struct);
-#endif /* HAVE_PUT_TASK_STRUCT */
-
/*
* Read the unique system identifier from the /etc/hostid file.
*