2009-04-19 14:05:43

by helight.xu

[permalink] [raw]
Subject: [PATCH] this mutex_lock is miss used


This mutex_lock and mutex_unlock has no use in such way.
It should be like this way:

Signed-off-by: Zhenwen Xu <[email protected]>
---
kernel/audit.c | 3 +--
1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/kernel/audit.c b/kernel/audit.c
index 9442c35..3176ffa 100644
--- a/kernel/audit.c
+++ b/kernel/audit.c
@@ -485,12 +485,11 @@ int audit_send_list(void *_dest)

/* wait for parent to finish and send an ACK */
mutex_lock(&audit_cmd_mutex);
- mutex_unlock(&audit_cmd_mutex);
-
while ((skb = __skb_dequeue(&dest->q)) != NULL)
netlink_unicast(audit_sock, skb, pid, 0);

kfree(dest);
+ mutex_unlock(&audit_cmd_mutex);

return 0;
}
--
1.5.6.5

--
---------------------------------
Zhenwen Xu - Open and Free
Home Page: http://zhwen.org
My Studio: http://dim4.cn


2009-04-19 15:32:38

by Al Viro

[permalink] [raw]
Subject: Re: [PATCH] this mutex_lock is miss used

On Sun, Apr 19, 2009 at 10:03:55PM +0800, Zhenwen Xu wrote:
>
> This mutex_lock and mutex_unlock has no use in such way.

Incorrect. They delay sending response until we are out of audit_receive().

> It should be like this way:

No, it should not. In particular, it should *NOT* be held while sending
these packets.