Re: reproducible w1 oops on recent kernels (at least since 3.2.x)

From: Sven Geggus
Date: Sat Mar 02 2013 - 05:13:37 EST


Marcin Jurkowski schrieb am Samstag, den 02. MÃrz um 01:11 Uhr:

> I can confirm that this bug persists in recent kernel. Onewire netlink
> interface to W1_SEARCH command must have been broken for a while.
>
> Good news is that it seems to be easy to fix. I'll post an explanation
> and a patch tomorrow.

I did not send this to the kernel Mailinglist but to Evgeniy
only. This is the bad commit I found doing git bisect:

04f482faf50535229a5a5c8d629cf963899f857c is the first bad commit
commit 04f482faf50535229a5a5c8d629cf963899f857c
Author: Patrick McHardy <kaber@xxxxxxxxx>
Date: Mon Mar 28 08:39:36 2011 +0000

connector: convert to synchronous netlink message processing

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

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

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

Signed-off-by: Patrick McHardy <kaber@xxxxxxxxx>
Acked-by: Evgeniy Polyakov <zbr@xxxxxxxxxxx>
Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>

Sven

--
"C Is Quirky, Flawed, And An Enormous Success."
(Dennis M. Ritchie)

/me is giggls@ircnet, http://sven.gegg.us/ on the Web
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/