Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
virtio-net: fix possible unsigned integer overflow
On Tue, Jan 31, 2023 at 03:40:32PM +0800, Heng Qi wrote: > On Tue, Jan 31, 2023 at 02:20:49AM -0500, Michael S. Tsirkin wrote: > > On Tue, Jan 31, 2023 at 11:43:37AM +0800, Heng Qi wrote: > > > When the single-buffer xdp is loaded and after xdp_linearize_page() > > > is called, *num_buf becomes 0 and (*num_buf - 1) may overflow into > > > a large integer in virtnet_build_xdp_buff_mrg(), resulting in > > > unexpected packet dropping. > > > > > > Fixes: ef75cb5 ("virtio-net: build xdp_buff with multi buffers") > > > Signed-off-by: Heng Qi <hengqi@linux.alibaba.com> > > > Reviewed-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com> > > > > Given the confusion, just make num_buf an int? > > In the structure virtio_net_hdr_mrg_rxbuf, \field{num_buffers} is unsigned int, > which matches each other. Because hardware buffers are all unsigned. Does not mean we need to do all math unsigned now. > And num_buf is used in many different places, it seems > to be a lot of work to modify it to int. Are you sure? Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
- Loading branch information