lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:	Tue, 2 Aug 2011 08:31:44 +0200 (CEST)
From:	Julia Lawall <julia@...u.dk>
To:	"Luis R. Rodriguez" <mcgrof@...il.com>
Cc:	Pavel Roskin <proski@....org>,
	linux-wireless <linux-wireless@...r.kernel.org>,
	Nicolas Palix <Nicolas.Palix@...ia.fr>,
	linux-kernel@...r.kernel.org, Gilles Muller <Gilles.Muller@...6.fr>
Subject: Re: Compat-wireless release for 2011-08-01 is (NOT) baked

On Mon, 1 Aug 2011, Luis R. Rodriguez wrote:

> On Mon, Aug 1, 2011 at 1:38 PM, Pavel Roskin <proski@....org> wrote:
> > On 08/01/2011 03:04 PM, Compat-wireless cronjob account wrote:
> >>
> >>  From git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next
> >>  + d7c6e83...c39a889 akpm-end   ->  origin/akpm-end  (forced update)
> >>    55f9c40..3da3f87  akpm-start ->  origin/akpm-start
> >>  + cf684c9...346346f master     ->  origin/master  (forced update)
> >>    55f9c40..3da3f87  stable     ->  origin/stable
> >>  * [new tag]         next-20110801 ->  next-20110801
> >> /usr/bin/sha1sum: *.tar.bz2: No such file or directory
> >
> 
> Right, this failed to build the compat-wireless daily tarball based on
> linux-next.git due to a failed hunk:
> 
> Applying backport patch: patches/01-netdev.patch
> patching file drivers/net/usb/rndis_host.c
> patching file drivers/net/usb/usbnet.c
> patching file drivers/net/wireless/rndis_wlan.c
> patching file net/mac80211/iface.c
> Hunk #1 FAILED at 698.
> Hunk #2 succeeded at 846 (offset 1 line).
> Hunk #3 succeeded at 885 (offset 1 line).
> Hunk #4 succeeded at 1136 (offset 1 line).
> Hunk #5 succeeded at 1146 (offset 1 line).
> 1 out of 5 hunks FAILED -- saving rejects to file net/mac80211/iface.c.rej
> patching file drivers/net/b44.c
> patching file net/wireless/wext-core.c
> patching file drivers/net/wireless/ipw2x00/ipw2100.c
> patching file drivers/net/wireless/ipw2x00/ipw2200.c
> patching file drivers/net/wireless/iwmc3200wifi/netdev.c
> patching file drivers/net/wireless/libertas/main.c
> patching file drivers/net/wireless/libertas/mesh.c
> patching file drivers/net/wireless/libertas/defs.h
> patching file drivers/net/wireless/mac80211_hwsim.c
> patching file drivers/net/wireless/mwifiex/main.c
> patching file drivers/net/wireless/orinoco/main.c
> patching file net/bluetooth/bnep/netdev.c
> Hunk #2 FAILED at 235.
> 1 out of 2 hunks FAILED -- saving rejects to file
> net/bluetooth/bnep/netdev.c.rej
> patching file drivers/net/atl1e/atl1e_main.c
> patching file drivers/net/atl1c/atl1c_main.c
> patching file drivers/net/atlx/atl1.c
> patching file drivers/net/atlx/atl2.c
> Patching patches/01-netdev.patch failed, update it
> 
> Whenever we have a failed hunk we run into this. I think we can do
> better, we could break down 01-netdev.patch into one a coccinelle
> spatch for example and then the rest to be handled separately, this
> may help speed with making us lazier and making the backup even more
> automatic.
> 
> For example:
> 
> mcgrof@tux ~/linux-next (git::master)$ cat netdev-attach.cocci
> @@
> expression ptr, ops;
> @@
> ...
> -ptr->netdev_ops = ops;
> +netdev_attach_ops(ptr, ops);
> ...

The outer dots are not needed.  Even incorrect, because they imply that 
there is only one occurrence of this code in the current function.

> mcgrof@tux ~/linux-next (git::master)$ spatch -sp_file
> netdev-attach.cocci -in_place drivers/net/usb/rndis_host.c
> init_defs_builtins: /usr/share/coccinelle/standard.h
> HANDLING: drivers/net/usb/rndis_host.c
> diff =
> --- drivers/net/usb/rndis_host.c        2011-04-25 11:44:25.713248001 -0700
> +++ /tmp/cocci-output-14779-d7a728-rndis_host.c 2011-08-01
> 16:30:48.342283464 -0700
> @@ -355,7 +355,7 @@ generic_rndis_bind(struct usbnet *dev, s
>         dev->rx_urb_size &= ~(dev->maxpacket - 1);
>         u.init->max_transfer_size = cpu_to_le32(dev->rx_urb_size);
> 
> -       net->netdev_ops = &rndis_netdev_ops;
> +       netdev_attach_ops(net, &rndis_netdev_ops);
> 
>         retval = rndis_command(dev, u.header, CONTROL_BUFFER_SIZE);
>         if (unlikely(retval < 0)) {
> 
> Question then is -- are we willing to require spatch for building the
> tarballs? I'm OK with this, anyone else?

The problem with Coccinelle is that there can be false positives and false 
negatives, ie th rule applies where it should not and doesn't apply where 
it should.  But there are probably cases like this one where one knows 
that it should always be done this way.  It would be nice, though if there 
could be some kind of guarantee that the right thing has happened.  
Perhaps there could be a way to generate from a semantic patch some checks 
that it has applied everywhere possible.  Or perhaps the semantic patch 
could be only used as a last resort, if the normal application fails.  In 
that way there would be less to check by hand.

julia

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ