Thread (11 messages) flat view 11 messages, 3 authors, 2012-10-05

Re: [patch v3 01/11] netlink: add reference of module in netlink_dump_start

From: Ben Hutchings <hidden>
Date: 2012-10-04 15:41:42
Also in: linux-crypto, linux-rdma, netfilter-devel

On Thu, 2012-10-04 at 12:41 +0800, Gao feng wrote:
I get a panic when I use ss -a and rmmod inet_diag at the
same time.

it's because netlink_dump use inet_diag_dump witch function
belongs to module inet_diag.

I search the codes and find many modules have the same problem.
We need add reference of the module witch the cb->dump belongs
to.

Thanks for all help from Stephen,Jan,Eric,Steffen and Pablo.

Change From v2:

delete netlink_dump_done,and call module_put in netlink_dump
and netlink_sock_destruct.
[...]
quoted hunk ↗ jump to hunk
@@ -1794,19 +1798,28 @@ int netlink_dump_start(struct sock *ssk, struct sk_buff *skb,
 		return -ECONNREFUSED;
 	}
 	nlk = nlk_sk(sk);
-	/* A dump is in progress... */
+
 	mutex_lock(nlk->cb_mutex);
+	/* A dump is in progress... */
 	if (nlk->cb) {
 		mutex_unlock(nlk->cb_mutex);
 		netlink_destroy_callback(cb);
-		sock_put(sk);
-		return -EBUSY;
+		ret = -EBUSY;
+		goto out;
 	}
+	/* add reference of module witch cb->dump belong to */
[...]

'which' not 'witch' :-)

Ben.

-- 
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help