[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAF2d9jgZkgk4kOyS7K959vEq_55DuEnkVdxzKPdmPiTxFfPvsg@mail.gmail.com>
Date: Wed, 26 Nov 2014 09:05:41 -0800
From: Mahesh Bandewar <maheshb@...gle.com>
To: Toshiaki Makita <makita.toshiaki@....ntt.co.jp>
Cc: netdev <netdev@...r.kernel.org>,
Eric Dumazet <edumazet@...gle.com>,
Maciej Zenczykowski <maze@...gle.com>,
Laurent Chavey <chavey@...gle.com>,
Tim Hockin <thockin@...gle.com>,
David Miller <davem@...emloft.net>,
Brandon Philips <brandon.philips@...eos.com>,
Pavel Emelianov <xemul@...allels.com>
Subject: Re: [PATCH net-next v4] ipvlan: Initial check-in of the IPVLAN driver.
On Tue, Nov 25, 2014 at 10:41 PM, Toshiaki Makita
<makita.toshiaki@....ntt.co.jp> wrote:
> Hi Mahesh,
>
> I found that deleting the last ipvlan device triggers WARN_ON() in
> rtmsg_ifinfo().
> ipvlan_nl_fillinfo() seems to return -EINVAL in that case.
>
>> +static int ipvlan_nl_fillinfo(struct sk_buff *skb,
>> + const struct net_device *dev)
>> +{
>> + struct ipvl_dev *ipvlan = netdev_priv(dev);
>> + struct ipvl_port *port = ipvlan_port_get_rtnl(ipvlan->phy_dev);
>> + int ret = -EINVAL;
>> +
>> + if (!port)
>> + goto err;
>> +
>> + ret = -EMSGSIZE;
>> + if (nla_put_u16(skb, IFLA_IPVLAN_MODE, port->mode))
>> + goto err;
>> +
>> + return 0;
>> +
>> +err:
>> + return ret;
>> +}
>
> rollback_registered_many() calls rtmsg_ifinfo() after calling ndo_uninit().
> ndo_uninit() (ipvlan_uninit() -> ipvlan_port_destroy() ->
> netdev_rx_handler_unregister()) sets rx_handler_data into NULL.
> So, we cannot dereference "port" in ipvlan_nl_fillinfo().
>
Calling fillinfo() after calling uninit() seems pointless on any
device. But how are you hitting this case? Can you share the command
sequence with me?
Thanks,
--mahesh..
> Maybe "mode" should belong to struct ipvl_dev?
>
> Thanks,
> Toshiaki Makita
>
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists