summaryrefslogtreecommitdiffstats
path: root/crypto/geniv.c
diff options
context:
space:
mode:
authorDavid Arinzon <darinzon@amazon.com>2024-04-10 09:13:55 +0000
committerPaolo Abeni <pabeni@redhat.com>2024-04-11 11:21:01 +0200
commit713a85195aad25d8a26786a37b674e3e5ec09e3c (patch)
tree927074558e4ffd3d0b9cc054652333bd587a8658 /crypto/geniv.c
parentfe3eb406723c7cc293a7bc99b34dce785e4d282d (diff)
downloadlinux-stable-713a85195aad25d8a26786a37b674e3e5ec09e3c.tar.gz
linux-stable-713a85195aad25d8a26786a37b674e3e5ec09e3c.tar.bz2
linux-stable-713a85195aad25d8a26786a37b674e3e5ec09e3c.zip
net: ena: Fix potential sign extension issue
Small unsigned types are promoted to larger signed types in the case of multiplication, the result of which may overflow. In case the result of such a multiplication has its MSB turned on, it will be sign extended with '1's. This changes the multiplication result. Code example of the phenomenon: ------------------------------- u16 x, y; size_t z1, z2; x = y = 0xffff; printk("x=%x y=%x\n",x,y); z1 = x*y; z2 = (size_t)x*y; printk("z1=%lx z2=%lx\n", z1, z2); Output: ------- x=ffff y=ffff z1=fffffffffffe0001 z2=fffe0001 The expected result of ffff*ffff is fffe0001, and without the explicit casting to avoid the unwanted sign extension we got fffffffffffe0001. This commit adds an explicit casting to avoid the sign extension issue. Fixes: 689b2bdaaa14 ("net: ena: add functions for handling Low Latency Queues in ena_com") Signed-off-by: Arthur Kiyanovski <akiyano@amazon.com> Signed-off-by: David Arinzon <darinzon@amazon.com> Reviewed-by: Shannon Nelson <shannon.nelson@amd.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Diffstat (limited to 'crypto/geniv.c')
0 files changed, 0 insertions, 0 deletions