[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20220517105445.355b1d22@kernel.org>
Date: Tue, 17 May 2022 10:54:45 -0700
From: Jakub Kicinski <kuba@...nel.org>
To: Hangbin Liu <liuhangbin@...il.com>
Cc: netdev@...r.kernel.org, Jay Vosburgh <j.vosburgh@...il.com>,
Veaceslav Falico <vfalico@...il.com>,
Andy Gospodarek <andy@...yhouse.net>,
"David S . Miller" <davem@...emloft.net>,
David Ahern <dsahern@...il.com>,
Jonathan Toppins <jtoppins@...hat.com>,
Eric Dumazet <eric.dumazet@...il.com>,
Paolo Abeni <pabeni@...hat.com>,
syzbot+92beb3d46aab498710fa@...kaller.appspotmail.com,
Vladimir Oltean <vladimir.oltean@....com>
Subject: Re: [PATCHv2 net] bonding: fix missed rcu protection
On Tue, 17 May 2022 16:23:12 +0800 Hangbin Liu wrote:
> + rcu_read_lock();
> real_dev = bond_option_active_slave_get_rcu(bond);
> if (real_dev) {
> + dev_hold(real_dev);
> + rcu_read_unlock();
> ops = real_dev->ethtool_ops;
> phydev = real_dev->phydev;
>
> if (phy_has_tsinfo(phydev)) {
> - return phy_ts_info(phydev, info);
> + ret = phy_ts_info(phydev, info);
> + goto out;
> } else if (ops->get_ts_info) {
> - return ops->get_ts_info(real_dev, info);
> + ret = ops->get_ts_info(real_dev, info);
> + goto out;
> }
> + } else {
> + rcu_read_unlock();
> }
>
> info->so_timestamping = SOF_TIMESTAMPING_RX_SOFTWARE |
> SOF_TIMESTAMPING_SOFTWARE;
> info->phc_index = -1;
>
> - return 0;
> +out:
> + if (real_dev)
> + dev_put(real_dev);
dev_hold() and dev_put() can take NULL these days, for better or worse.
I think the code simplification is worth making use of that, even tho
it will make the backport slightly more tricky (perhaps make a not of
this in the commit message).
Powered by blists - more mailing lists