--- /dev/null
+From 156baec39732f025dc778e00da95fc10d6e45885 Mon Sep 17 00:00:00 2001
+From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
+Date: Thu, 7 Dec 2017 09:40:38 -0800
+Subject: rcu: Export init_rcu_head() and destroy_rcu_head() to GPL modules
+
+From: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
+
+commit 156baec39732f025dc778e00da95fc10d6e45885 upstream.
+
+Use of init_rcu_head() and destroy_rcu_head() from modules results in
+the following build-time error with CONFIG_DEBUG_OBJECTS_RCU_HEAD=y:
+
+ ERROR: "init_rcu_head" [drivers/scsi/scsi_mod.ko] undefined!
+ ERROR: "destroy_rcu_head" [drivers/scsi/scsi_mod.ko] undefined!
+
+This commit therefore adds EXPORT_SYMBOL_GPL() for each to allow them to
+be used by GPL-licensed kernel modules.
+
+Reported-by: Bart Van Assche <Bart.VanAssche@wdc.com>
+Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
+Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ kernel/rcu/update.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/kernel/rcu/update.c
++++ b/kernel/rcu/update.c
+@@ -422,11 +422,13 @@ void init_rcu_head(struct rcu_head *head
+ {
+ debug_object_init(head, &rcuhead_debug_descr);
+ }
++EXPORT_SYMBOL_GPL(init_rcu_head);
+
+ void destroy_rcu_head(struct rcu_head *head)
+ {
+ debug_object_free(head, &rcuhead_debug_descr);
+ }
++EXPORT_SYMBOL_GPL(destroy_rcu_head);
+
+ static bool rcuhead_is_static_object(void *addr)
+ {