From 1d17e6386c8e6a896c33ded4e109122e45fbfa5e Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Thu, 2 Feb 2012 19:24:05 +0000 Subject: [PATCH] fcst: Follow-up for r4106 - make fcst build again on kernel 3.0 and before git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4107 d57e44dd-8a1f-0410-8b47-8ef2f437770f --- fcst/ft_sess.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/fcst/ft_sess.c b/fcst/ft_sess.c index b506c463a..3f61e31b0 100644 --- a/fcst/ft_sess.c +++ b/fcst/ft_sess.c @@ -78,6 +78,18 @@ static struct ft_tport *ft_tport_create(struct fc_lport *lport) return tport; } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 1, 0) +/* + * Free tport via RCU. + */ +static void ft_tport_rcu_free(struct rcu_head *rcu) +{ + struct ft_tport *tport = container_of(rcu, struct ft_tport, rcu); + + kfree(tport); +} +#endif + /* * Delete target local port, if any, associated with the local port. * Caller holds ft_lport_lock. @@ -95,7 +107,11 @@ static void ft_tport_delete(struct ft_tport *tport) BUG_ON(tport != lport->prov[FC_TYPE_FCP]); rcu_assign_pointer(lport->prov[FC_TYPE_FCP], NULL); tport->lport = NULL; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 1, 0) + call_rcu(&tport->rcu, ft_tport_rcu_free); +#else kfree_rcu(tport, rcu); +#endif ft_tport_count--; }