linux/drivers
Feng Liu dae64749db virtio_net: Introduce skb_vnet_common_hdr to avoid typecasting
The virtio_net driver currently deals with different versions and types
of virtio net headers, such as virtio_net_hdr_mrg_rxbuf,
virtio_net_hdr_v1_hash, etc. Due to these variations, the code relies
on multiple type casts to convert memory between different structures,
potentially leading to bugs when there are changes in these structures.

Introduces the "struct skb_vnet_common_hdr" as a unifying header
structure using a union. With this approach, various virtio net header
structures can be converted by accessing different members of this
structure, thus eliminating the need for type casting and reducing the
risk of potential bugs.

For example following code:
static struct sk_buff *page_to_skb(struct virtnet_info *vi,
		struct receive_queue *rq,
		struct page *page, unsigned int offset,
		unsigned int len, unsigned int truesize,
		unsigned int headroom)
{
[...]
	struct virtio_net_hdr_mrg_rxbuf *hdr;
[...]
	hdr_len = vi->hdr_len;
[...]
ok:
	hdr = skb_vnet_hdr(skb);
	memcpy(hdr, hdr_p, hdr_len);
[...]
}

When VIRTIO_NET_F_HASH_REPORT feature is enabled, hdr_len = 20
But the sizeof(*hdr) is 12,
memcpy(hdr, hdr_p, hdr_len); will copy 20 bytes to the hdr,
which make a potential risk of bug. And this risk can be avoided by
introducing struct skb_vnet_common_hdr.

Change log
v1->v2
feedback from Willem de Bruijn <willemdebruijn.kernel@gmail.com>
feedback from Simon Horman <horms@kernel.org>
1. change to use net-next tree.
2. move skb_vnet_common_hdr inside kernel file instead of the UAPI header.

v2->v3
feedback from Willem de Bruijn <willemdebruijn.kernel@gmail.com>
1. fix typo in commit message.
2. add original struct virtio_net_hdr into union
3. remove virtio_net_hdr_mrg_rxbuf variable in receive_buf;

Signed-off-by: Feng Liu <feliu@nvidia.com>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Reviewed-by: Willem de Bruijn <willemb@google.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2023-08-23 09:40:18 +01:00
..
accel One EPROBE_DEFER handling fix for the JDI LT070ME05000, a timing fix for 2023-08-18 06:08:58 +10:00
accessibility
acpi platform-drivers-x86 for v6.5-4 2023-08-13 08:50:26 -07:00
amba
android binder: fix memory leak in binder_init() 2023-08-04 15:25:01 +02:00
ata ata,scsi: do not issue START STOP UNIT on resume 2023-08-02 17:01:12 +09:00
atm
auxdisplay drm changes for 6.5-rc1: 2023-06-29 11:00:17 -07:00
base driver core: cpu: Fix the fallback cpu_show_gds() name 2023-08-11 20:36:02 +02:00
bcma
block Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2023-08-18 12:44:56 -07:00
bluetooth Bluetooth: btrtl: Load FW v2 otherwise FW v1 for RTL8852C 2023-08-11 11:57:13 -07:00
bus SoC fixes for 6.5, part 1 2023-07-06 09:56:53 -07:00
cdrom cdrom/gdrom: Fix build error 2023-06-29 08:09:31 -06:00
cdx cdx: Replace custom mcdi logging with print_hex_dump_debug() 2023-06-15 13:42:16 +02:00
char tpm_tis: Opt-in interrupts 2023-08-12 02:36:28 +03:00
clk Amlogic clock fixes for v6.5 2023-07-26 11:47:57 -07:00
clocksource RISC-V Patches for the 6.5 Merge Window, Part 1 2023-06-30 09:37:26 -07:00
comedi comedi: make all 'class' structures const 2023-06-23 10:29:02 +02:00
connector connector/cn_proc: Allow non-root users access 2023-07-23 11:34:22 +01:00
counter First set of Counter fixes for 6.5 2023-08-04 15:17:29 +02:00
cpufreq cpufreq: amd-pstate: fix global sysfs attribute type 2023-08-07 19:41:48 +02:00
cpuidle cpuidle: psci: Move enabling OSI mode after power domains creation 2023-08-08 16:07:01 +02:00
crypto s390 updates for 6.5 merge window part 2 2023-07-06 13:18:30 -07:00
cxl cxl/memdev: Only show sanitize sysfs files when supported 2023-07-28 13:16:54 -06:00
dax dax: enable dax fault handler to report VM_FAULT_HWPOISON 2023-06-26 07:54:23 -06:00
dca
devfreq
dio
dma dmaengine: xilinx: xdma: Fix typo 2023-08-07 00:01:41 +05:30
dma-buf dma-buf/dma-resv: Stop leaking on krealloc() failure 2023-07-15 13:57:30 +02:00
edac - Add initial support for RAS hardware found on AMD server GPUs (MI200). 2023-06-26 15:09:18 -07:00
eisa
extcon
firewire firewire: net: fix use after free in fwnet_finish_incoming_packet() 2023-06-24 14:03:46 +09:00
firmware firmware: arm_scmi: Fix chan_free cleanup on SMC 2023-07-20 13:31:58 +01:00
fpga Char/Misc and other driver subsystem updates for 6.5-rc1 2023-07-03 12:46:47 -07:00
fsi
gnss
gpio gpio: ws16c48: Fix off-by-one error in WS16C48 resource region extent 2023-08-11 21:31:59 +02:00
gpu drm/qxl: fix UAF on handle creation 2023-08-18 06:57:38 +10:00
greybus
hid for-netdev 2023-07-13 19:13:24 -07:00
hsi
hte
hv x86/hyperv: Improve code for referencing hyperv_pcpu_input_arg 2023-06-28 17:53:25 +00:00
hwmon hwmon: (aquacomputer_d5next) Add selective 200ms delay after sending ctrl report 2023-08-09 21:09:47 -07:00
hwspinlock hwspinlock: omap: drop of_match_ptr for ID table 2023-06-14 08:15:24 -07:00
hwtracing Char/Misc and other driver subsystem updates for 6.5-rc1 2023-07-03 12:46:47 -07:00
i2c Part 2 of I2C patches for 6.5 2023-07-08 12:28:00 -07:00
i3c
idle Revert "intel_idle: Add support for using intel_idle in a VM guest using just hlt" 2023-07-19 20:10:03 +02:00
iio iio: cros_ec: Fix the allocation size for cros_ec_command 2023-07-29 12:21:21 +01:00
infiniband mlx4: Connect the infiniband part to the auxiliary bus 2023-08-23 08:25:28 +01:00
input ARM: SoC changes for 6.5 2023-06-29 15:28:33 -07:00
interconnect interconnect: qcom: sa8775p: add enable_mask for bcm nodes 2023-07-11 15:44:43 +03:00
iommu iommufd: Set end correctly when doing batch carry 2023-07-27 11:27:20 -03:00
ipack
irqchip - Work around an erratum on GIC700, where a race between a CPU 2023-07-30 10:59:19 -07:00
isdn mISDN: Update parameter type of dsp_cmx_send() 2023-08-03 18:08:32 -07:00
leds leds: trig-netdev: Disable offload on deactivation of trigger 2023-08-10 17:35:00 -07:00
macintosh macintosh: Use of_property_read_reg() to parse "reg" 2023-06-21 14:08:54 +10:00
mailbox mailbox: ti-msgmgr: Fill non-message tx data fields with 0x0 2023-06-30 17:35:45 -05:00
mcb
md dm cache policy smq: ensure IO doesn't prevent cleaner policy progress 2023-07-25 11:55:50 -04:00
media hardening fixes for v6.5-rc6 2023-08-08 14:59:49 -07:00
memory memory: tegra: make icc_set_bw return zero if BWMGR not supported 2023-07-25 22:09:20 +02:00
memstick memstick r592: make memstick_debug_get_tpc_name() static 2023-06-12 15:16:19 +02:00
message
mfd - New Drivers 2023-07-03 10:55:04 -07:00
misc misc: tps6594-esm: Disable ESM for rev 1 PMIC 2023-08-04 15:52:51 +02:00
mmc mmc: sdhci-f-sdh30: Replace with sdhci_pltfm 2023-07-14 11:28:55 +02:00
most
mtd mtd: rawnand: fsl_upm: Fix an off-by one test in fun_exec_op() 2023-07-27 16:54:23 +02:00
mux mux: adg792a: Switch back to use i2c_driver's .probe() 2023-06-15 13:42:18 +02:00
net virtio_net: Introduce skb_vnet_common_hdr to avoid typecasting 2023-08-23 09:40:18 +01:00
nfc nfc: virtual_ncidev: Use module_misc_device macro to simplify the code 2023-08-16 09:54:16 +01:00
ntb ntb: hw: amd: Fix debugfs_create_dir error checking 2023-07-08 13:55:44 -04:00
nubus
nvdimm dax: enable dax fault handler to report VM_FAULT_HWPOISON 2023-06-26 07:54:23 -06:00
nvme block-6.5-2023-08-11 2023-08-11 12:14:08 -07:00
nvmem nvmem: rmem: Use NVMEM_DEVID_AUTO 2023-06-15 13:42:18 +02:00
of of: Preserve "of-display" device name for compatibility 2023-07-11 16:33:01 -06:00
opp OPP: Properly propagate error along when failing to get icc_path 2023-06-27 07:35:14 +05:30
parisc parisc: Move proc_mckinley_root and proc_runway_root to sba_iommu 2023-08-10 22:22:03 +02:00
parport parport: gsc: remove DMA leftover code 2023-08-03 14:40:37 +02:00
pci pci-v6.5-fixes-1 2023-08-11 09:39:17 -07:00
pcmcia pcmcia: rsrc_nonstatic: Fix memory leak in nonstatic_release_resource_db() 2023-06-15 13:42:18 +02:00
peci
perf perf: RISC-V: Remove PERF_HES_STOPPED flag checking in riscv_pmu_start() 2023-07-12 07:41:23 -07:00
phy phy: hisilicon: Fix an out of bounds check in hisi_inno_phy_probe() 2023-07-24 16:23:37 +05:30
pinctrl pinctrl: renesas: Fixes for v6.5 2023-07-13 00:05:52 +02:00
platform platform/x86: lenovo-ymc: Only bind on machines with a convertible DMI chassis-type 2023-08-13 14:50:25 +02:00
pnp
power power supply and reset changes for the 6.5 series 2023-07-03 17:23:16 -07:00
powercap powercap: intel_rapl: Fix a sparse warning in TPMI interface 2023-08-01 13:45:08 +02:00
pps
ps3
ptp net: ptp: create a mock-up PTP Hardware Clock driver 2023-08-09 15:59:21 -07:00
pwm pwm: Changes for v6.5-rc1 2023-07-05 12:55:06 -07:00
rapidio
ras
regulator regulator: qcom-rpmh: Fix LDO 12 regulator for PM8550 2023-08-07 15:13:27 +01:00
remoteproc remoteproc updates for v6.5 2023-07-03 17:03:05 -07:00
reset ARM: SoC drivers for 6.5 2023-06-29 15:22:19 -07:00
rpmsg
rtc RTC for 6.5 2023-07-03 10:43:10 -07:00
s390 Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2023-08-03 14:34:37 -07:00
sbus oradax: make 'cl' a static const structure 2023-06-23 10:27:02 +02:00
scsi SCSI fixes on 20230813 2023-08-13 08:43:26 -07:00
sh
siox
slimbus
soc soc: imx: imx8mp-blk-ctrl: register HSIO PLL clock as bus_power_dev child 2023-07-19 15:44:02 +08:00
soundwire soundwire: amd: Fix a check for errors in probe() 2023-07-13 11:09:07 +05:30
spi spi: spi-qcom-qspi: Add mem_ops to avoid PIO for badly sized reads 2023-07-26 12:47:20 +01:00
spmi
ssb
staging Staging driver fixes for 6.5-rc4 2023-07-30 11:47:56 -07:00
target SCSI misc on 20230708 2023-07-08 12:35:18 -07:00
tc
tee ARM: SoC drivers for 6.5 2023-06-29 15:22:19 -07:00
thermal powercap: intel_rapl: Fix a sparse warning in TPMI interface 2023-08-01 13:45:08 +02:00
thunderbolt thunderbolt: Fix memory leak in tb_handle_dp_bandwidth_request() 2023-08-04 16:17:47 +03:00
tty TTY/Serial fixes for 6.5-rc4 2023-07-30 11:51:36 -07:00
ufs scsi: ufs: renesas: Fix private allocation 2023-08-07 21:34:08 -04:00
uio
usb usb: dwc3: Properly handle processing of pending events 2023-08-04 14:57:23 +02:00
vdpa Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2023-08-18 12:44:56 -07:00
vfio net/mlx5: Allocate completion EQs dynamically 2023-08-07 10:53:52 -07:00
vhost vhost-scsi: Rename vhost_scsi_iov_to_sgl 2023-08-10 15:24:28 -04:00
video fbdev: Explicitly include correct DT includes 2023-07-20 07:56:30 +02:00
virt workqueue: Ordered workqueue creation cleanups 2023-06-27 16:46:06 -07:00
virtio virtio-mem: check if the config changed before fake offlining memory 2023-08-10 15:51:46 -04:00
vlynq
w1 connector/cn_proc: Add filtering to fix some bugs 2023-07-23 11:34:22 +01:00
watchdog watchdog: sp5100_tco: support Hygon FCH/SCH (Server Controller Hub) 2023-06-26 14:30:07 +02:00
xen xen: speed up grant-table reclaim 2023-07-27 07:53:12 +02:00
zorro
Kconfig
Makefile