From: Michal Sojka Date: Sun, 5 Dec 2010 11:04:12 +0000 (+0100) Subject: can/gw: Fix sleep in atomic context bug X-Git-Url: https://rtime.felk.cvut.cz/gitweb/lisovros/linux_canprio.git/commitdiff_plain/c44e184bd15cf8a69240eafba55de639d8f94a06 can/gw: Fix sleep in atomic context bug --- diff --git a/net/can/gw.c b/net/can/gw.c index 94ba3f1bafc..7779ca64819 100644 --- a/net/can/gw.c +++ b/net/can/gw.c @@ -822,11 +822,14 @@ static int cgw_create_job(struct sk_buff *skb, struct nlmsghdr *nlh, if (gwj->dst.dev->type != ARPHRD_CAN) goto put_src_dst_out; - spin_lock(&cgw_list_lock); err = cgw_register_filter(gwj); - if (!err) - hlist_add_head_rcu(&gwj->list, &cgw_list); + if (err) + goto put_src_dst_out; + + spin_lock(&cgw_list_lock); + + hlist_add_head_rcu(&gwj->list, &cgw_list); spin_unlock(&cgw_list_lock);