On Mon, 21 Jun 2010 15:53:49 -0700 Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote: > On Sun, 20 Jun 2010 15:40:02 +0200 (CEST) > Julia Lawall <julia@xxxxxxx> wrote: > > > From: Julia Lawall <julia@xxxxxxx> > > > > There are two initializations of ndo_set_mac_address, one to a local > > function that is not used otherwise and one to a function that is defined > > elsewhere. This patch keeps the initialization to the local function. > > > > The semantic match that finds this problem is as follows: > > (http://coccinelle.lip6.fr/) > > > > // <smpl> > > @r@ > > identifier I, s, fld; > > position p0,p; > > expression E; > > @@ > > > > struct I s =@p0 { ... .fld@p = E, ...}; > > > > @s@ > > identifier I, s, r.fld; > > position r.p0,p; > > expression E; > > @@ > > > > struct I s =@p0 { ... .fld@p = E, ...}; > > > > @script:python@ > > p0 << r.p0; > > fld << r.fld; > > ps << s.p; > > pr << r.p; > > @@ > > > > if int(ps[0].line)<int(pr[0].line) or int(ps[0].column)<int(pr[0].column): > > cocci.print_main(fld,p0) > > // </smpl> > > > > Signed-off-by: Julia Lawall <julia@xxxxxxx> > > > > --- > > This fix was sent previously, in September 2009. > > > > arch/um/drivers/net_kern.c | 1 - > > 1 file changed, 1 deletion(-) > > > > diff --git a/arch/um/drivers/net_kern.c b/arch/um/drivers/net_kern.c > > index f053726..d2d42d8 100644 > > --- a/arch/um/drivers/net_kern.c > > +++ b/arch/um/drivers/net_kern.c > > @@ -380,7 +380,6 @@ static const struct net_device_ops uml_netdev_ops = { > > .ndo_tx_timeout = uml_net_tx_timeout, > > .ndo_set_mac_address = uml_net_set_mac, > > .ndo_change_mtu = uml_net_change_mtu, > > - .ndo_set_mac_address = eth_mac_addr, > > .ndo_validate_addr = eth_validate_addr, > > }; > > Your patch is actually a functional change. > > Geeze, whatamess. > > > This duplicated field was added by > > : commit 8bb95b39a16ed55226810596f92216c53329d2fe > : Author: Stephen Hemminger <shemminger@xxxxxxxxxxxxxxxxxxxx> > : AuthorDate: Thu Mar 26 15:11:17 2009 +0000 > : Commit: David S. Miller <davem@xxxxxxxxxxxxx> > : CommitDate: Fri Mar 27 00:46:40 2009 -0700 > : > : uml: convert network device to netdevice ops > > Either Stephen fat-fingered it, or it was a secret, unchangelogged (and > partial) cleanup. > > Presumably the spin_lock_irq(&lp->lock); stuff is in uml_net_set_mac() > for a reason so presumably we should restore it. > > > - Use the standard eth_mac_addr() in uml_net_set_mac() > > - Remove unneeded and racy local set_ether_mac() > > - Remove duplicated (and incorrect) > uml_netdev_ops.ndo_set_mac_address initializer. > > Fixes 8bb95b39a16ed55226810596f92216c53329d2fe ("uml: convert network > device to netdevice ops"). > > diff -puN arch/um/drivers/net_kern.c~arch-um-drivers-remove-duplicate-structure-field-initialization arch/um/drivers/net_kern.c > --- a/arch/um/drivers/net_kern.c~arch-um-drivers-remove-duplicate-structure-field-initialization > +++ a/arch/um/drivers/net_kern.c > @@ -25,11 +25,6 @@ > #include "net_kern.h" > #include "net_user.h" > > -static inline void set_ether_mac(struct net_device *dev, unsigned char *addr) > -{ > - memcpy(dev->dev_addr, addr, ETH_ALEN); > -} > - > #define DRIVER_NAME "uml-netdev" > > static DEFINE_SPINLOCK(opened_lock); > @@ -266,7 +261,7 @@ static int uml_net_set_mac(struct net_de > struct sockaddr *hwaddr = addr; > > spin_lock_irq(&lp->lock); > - set_ether_mac(dev, hwaddr->sa_data); > + eth_mac_addr(dev, hwaddr->sa_data); > spin_unlock_irq(&lp->lock); > > return 0; > @@ -380,7 +375,6 @@ static const struct net_device_ops uml_n > .ndo_tx_timeout = uml_net_tx_timeout, > .ndo_set_mac_address = uml_net_set_mac, > .ndo_change_mtu = uml_net_change_mtu, > - .ndo_set_mac_address = eth_mac_addr, > .ndo_validate_addr = eth_validate_addr, > }; > > @@ -478,7 +472,7 @@ static void eth_configure(int n, void *i > ((*transport->user->init)(&lp->user, dev) != 0)) > goto out_unregister; > > - set_ether_mac(dev, device->mac); > + eth_mac_addr(dev, device->mac); > dev->mtu = transport->user->mtu; > dev->netdev_ops = ¨_netdev_ops; > dev->ethtool_ops = ¨_net_ethtool_ops; Looks correct thanks. -- To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html