Re: [PATCH v6 net-next 11/15] net: catch errors from dev_get_stats
From: Vladimir Oltean <olteanv@gmail.com>
Date: 2021-01-18 10:44:26
On Mon, Jan 11, 2021 at 03:51:39PM -0800, Saeed Mahameed wrote:
On Tue, 2021-01-12 at 01:15 +0200, Vladimir Oltean wrote:quoted
On Mon, Jan 11, 2021 at 02:54:50PM -0800, Saeed Mahameed wrote:quoted
On Sat, 2021-01-09 at 19:26 +0200, Vladimir Oltean wrote:quoted
From: Vladimir Oltean <vladimir.oltean@nxp.com> dev_get_stats can now return error codes. Convert all remaining call sites to look at that error code and stop processing. The effects of simulating a kernel error (returning -ENOMEM) upon existing programs or kernel interfaces: - ifconfig and "cat /proc/net/dev" print up until the interface that failed, and there they return: cat: read error: Cannot allocate memory - ifstat and "ip -s -s link show": RTNETLINK answers: Cannot allocate memory Dump terminated Some call sites are coming from a context that returns void (ethtool stats, workqueue context). So since we can't report to the upper layer, do the next best thing: print an error to the console.another concern, one buggy netdev driver in a system will cause unnecessary global failures when reading stats via netlink/procfs for all the netdev in a netns, when other drivers will be happy to report. can't we just show a message in that driver's stats line about the occurred err ? and show the normal stats line of all others ?So you're worried that user space apps won't handle an error code when reading from a file, but you're not worried that they'll start scraping junk from procfs when we print this?both are equivalently concerning. to avoid any user crashes, we can just toss failed netdevs out from the output.
I'm not sure I'm on the same page here, basically I churned through the whole kernel to propagate the error code from dev_get_stats, just to not report it anywhere?