Upstream linux kernel implemented ring parameter boundaries check in commit:
37e2d99b59c4 ("ethtool: Ensure new ring parameters are within bounds during SRINGPARAM")
Due to this commit, the community doesn't allow ring parameter boundary checks in driver code.
The Bionic ubuntu kernel does not include this patch. And some network drivers rely on this patch for
boundary checking of ring params.
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.
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)
More data about the machine where the bug occured:
Upstream linux kernel implemented ring parameter boundaries check in commit:
37e2d99b59c4 ("ethtool: Ensure new ring parameters are within bounds during SRINGPARAM")
(see link https:/ /patchwork. ozlabs. org<email address hidden>/)
Due to this commit, the community doesn't allow ring parameter boundary checks in driver code.
The Bionic ubuntu kernel does not include this patch. And some network drivers rely on this patch for
boundary checking of ring params.
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.
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)
More data about the machine where the bug occured:
ubuntu@ ip-172- 31-80-28: ~/bionic$ lsb_release -rd
Description: Ubuntu 18.04.4 LTS
Release: 18.04
ubuntu@ ip-172- 31-80-28: ~/bionic$ uname -r
4.15.0-1065-aws