summaryrefslogtreecommitdiff
path: root/drivers/net
diff options
context:
space:
mode:
authorPhilo Lu <lulie@linux.alibaba.com>2024-11-04 16:57:04 +0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2024-11-14 13:19:32 +0100
commitaf0aa8aecbe8985079232902894cc4cb62795691 (patch)
tree3bf28115a796e7c51d43d7e2a1f50c9e31b2566a /drivers/net
parentbfd05c68e4c6320304e9f371ffa356b6e4b9cc53 (diff)
downloadlinux-af0aa8aecbe8985079232902894cc4cb62795691.tar.gz
linux-af0aa8aecbe8985079232902894cc4cb62795691.tar.bz2
linux-af0aa8aecbe8985079232902894cc4cb62795691.zip
virtio_net: Add hash_key_length check
[ Upstream commit 3f7d9c1964fcd16d02a8a9d4fd6f6cb60c4cc530 ] Add hash_key_length check in virtnet_probe() to avoid possible out of bound errors when setting/reading the hash key. Fixes: c7114b1249fa ("drivers/net/virtio_net: Added basic RSS support.") Signed-off-by: Philo Lu <lulie@linux.alibaba.com> Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com> Acked-by: Joe Damato <jdamato@fastly.com> Acked-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/virtio_net.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 2da3be3fb942..426c05d5b138 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -4549,6 +4549,12 @@ static int virtnet_probe(struct virtio_device *vdev)
if (vi->has_rss || vi->has_rss_hash_report) {
vi->rss_key_size =
virtio_cread8(vdev, offsetof(struct virtio_net_config, rss_max_key_size));
+ if (vi->rss_key_size > VIRTIO_NET_RSS_MAX_KEY_SIZE) {
+ dev_err(&vdev->dev, "rss_max_key_size=%u exceeds the limit %u.\n",
+ vi->rss_key_size, VIRTIO_NET_RSS_MAX_KEY_SIZE);
+ err = -EINVAL;
+ goto free;
+ }
vi->rss_hash_types_supported =
virtio_cread32(vdev, offsetof(struct virtio_net_config, supported_hash_types));