connector: convert to synchronous netlink message processing
authorPatrick McHardy <kaber@trash.net>
Mon, 28 Mar 2011 08:39:36 +0000 (08:39 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 31 Mar 2011 00:14:33 +0000 (17:14 -0700)
commit04f482faf50535229a5a5c8d629cf963899f857c
tree698d5c8e22e68f9a621c03972556e3a73c525465
parente2666f84958adb3a034b98e99699b55705117e01
connector: convert to synchronous netlink message processing

Commits 01a16b21 (netlink: kill eff_cap from struct netlink_skb_parms)
and c53fa1ed (netlink: kill loginuid/sessionid/sid members from struct
netlink_skb_parms) removed some members from struct netlink_skb_parms
that depend on the current context, all netlink users are now required
to do synchronous message processing.

connector however queues received messages and processes them in a work
queue, which is not valid anymore. This patch converts connector to do
synchronous message processing by invoking the registered callback handler
directly from the netlink receive function.

In order to avoid invoking the callback with connector locks held, a
reference count is added to struct cn_callback_entry, the reference
is taken when finding a matching callback entry on the device's queue_list
and released after the callback handler has been invoked.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Acked-by: Evgeniy Polyakov <zbr@ioremap.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/connector/cn_queue.c
drivers/connector/connector.c
include/linux/connector.h