From: Josh Triplett Date: Fri, 30 Jun 2006 00:02:31 +0000 (-0700) Subject: [IrDA]: Fix RCU lock pairing on error path X-Git-Tag: v2.6.18-rc1~321^2~4 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=1bc1731133140dccdd08899a59bbc06d975d0a15;p=linux-2.6-omap-h63xx.git [IrDA]: Fix RCU lock pairing on error path irlan_client_discovery_indication calls rcu_read_lock and rcu_read_unlock, but returns without unlocking in an error case. Fix that by replacing the return with a goto so that the rcu_read_unlock always gets executed. Signed-off-by: Josh Triplett Acked-by: Paul E. McKenney Signed-off-by: Samuel Ortiz samuel@sortiz.org <> Signed-off-by: David S. Miller --- diff --git a/net/irda/irlan/irlan_client.c b/net/irda/irlan/irlan_client.c index f8e6cb0db04..95cf1234ea1 100644 --- a/net/irda/irlan/irlan_client.c +++ b/net/irda/irlan/irlan_client.c @@ -173,13 +173,14 @@ void irlan_client_discovery_indication(discinfo_t *discovery, rcu_read_lock(); self = irlan_get_any(); if (self) { - IRDA_ASSERT(self->magic == IRLAN_MAGIC, return;); + IRDA_ASSERT(self->magic == IRLAN_MAGIC, goto out;); IRDA_DEBUG(1, "%s(), Found instance (%08x)!\n", __FUNCTION__ , daddr); irlan_client_wakeup(self, saddr, daddr); } +IRDA_ASSERT_LABEL(out:) rcu_read_unlock(); }