** Description changed:

- Upstream linux kernel implemented ring parameter boundaries check in commit:
- 37e2d99b59c4 ("ethtool: Ensure new ring parameters are within bounds during 
SRINGPARAM")
+ [Impact]
+ * There's a bad behavior in the ena driver ringparam setting on kernels 4.4 
and 4.15, if an invalid ringparam is provided to ethtool.
  
- (see link
- https://patchwork.ozlabs.org/project/netdev/patch/1515420026-11970-2
- [email protected]/)
+ * Upstream Linux kernel implemented ring parameter boundaries check in 
commit: 37e2d99b59c4 ("ethtool: Ensure new ring parameters are within bounds 
during SRINGPARAM") [ git.kernel.org/linus/37e2d99b59c4 ].
+ Due to this commit, the community doesn't usually allow ring parameter 
boundary checks in driver code.
  
- Due to this commit, the community doesn't allow ring parameter boundary
- checks in driver code.
+ * Xenial/Bionic kernels don't include this patch, and some network
+ drivers (like ena) rely on this patch for boundary checking of ring
+ params. So, we are hereby requesting the commit inclusion in these
+ kernel versions.
  
- The Bionic ubuntu kernel does not include this patch. And some network 
drivers rely on this patch for
- boundary checking of ring params.
+ [Test case]
+ 1. In AWS, create a new c5.4xlarge instance with the Ubuntu 18.04 official 
ami (uses the ENA network driver) and update to latest kernel/reboot.
  
- This causes bugs in case a ringparam was given an illegal value.
- 
- Reproduction steps in AWS:
- 
- 1. Create new c5.4xlarge instance with the ubuntu 18.04 official ami (uses 
the ENA network driver) and update to latest kernel using apt-get dist-upgrade 
and reboot for the new kernel to load.
  2. Run ethtool -g ens5
  output:
  Ring parameters for ens5:
  Pre-set maximums:
  RX:           16384
  RX Mini:      0
  RX Jumbo:     0
  TX:           1024
  Current hardware settings:
  RX:           1024
  RX Mini:      0
  RX Jumbo:     0
  TX:           1024
  
- 3. Change the tx ring size to a legal number within boundaries - works!
- 4. Change the tx ring size to an illegal number such as 2048 with the command 
- sudo ethtool -G ens5 tx 2048.
- Expected behavior - operation not allowed
- Actual behavior - causes a crash of the driver since boundaries are not 
checked by ethtool.
+ 3. Change the TX/RX ring size to a legal number within boundaries -
+ works!
  
- Proposed fix - include the above commit 37e2d99b59c4 ("ethtool: Ensure
- new ring parameters are within bounds during SRINGPARAM") in bionic (and
- probably other ubuntu releases as well)
+ 4. Change the TX/RX ring size to an illegal number (such as 2048 for TX)
+ with the command - "sudo ethtool -G ens5 tx 2048".
  
+ Expected behavior - "Cannot set device ring parameters: Invalid argument"
+ Actual behavior - causes a driver hang since boundaries are not checked by 
ethtool, effectively hanging the instance (given that AWS has no console to 
allow system manipulation).
  
- More data about the machine where the bug occured:
+ [Regression Potential]
  
- ubuntu@ip-172-31-80-28:~/bionic$ lsb_release -rd
- Description:  Ubuntu 18.04.4 LTS
- Release:      18.04
+ Since that the commit is present in kernels v4.16+ (including Ubuntu)
+ and is quite small and self-contained, the regression risk is very
+ reduced.
  
- ubuntu@ip-172-31-80-28:~/bionic$ uname -r
- 4.15.0-1065-aws
+ One potential "regression" would be if some driver has bugs and provide
+ bad values on get_ringparams, then the validation would be broken
+ (allowing illegal values or refusing legal ones), but this wouldn't be a
+ regression in the hereby proposed patch itself, it'd be only exposed by
+ the patch.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1874444

Title:
  Bionic ubuntu ethtool doesn't check ring parameters boundaries

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1874444/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to