android_kernel_msm-6.1_noth.../drivers
Gustavo A. R. Silva 727964650a wifi: iwlwifi: mvm: Fix -Warray-bounds bug in iwl_mvm_wait_d3_notif()
commit 7a4615b9a9da5225b22b36a20508555dd133ac24 upstream.

kmemdup() at line 2735 is not duplicating enough memory for
notif->tid_tear_down and notif->station_id. As it only duplicates
612 bytes: up to offsetofend(struct iwl_wowlan_info_notif,
received_beacons), this is the range of [0, 612) bytes.

2735	notif = kmemdup(notif_v1,
2736			offsetofend(struct iwl_wowlan_info_notif,
2737				    received_beacons),
2738			GFP_ATOMIC);

which evidently does not cover bytes 612 and 613 for members
tid_tear_down and station_id in struct iwl_wowlan_info_notif.
See below:

$ pahole -C iwl_wowlan_info_notif drivers/net/wireless/intel/iwlwifi/mvm/d3.o
struct iwl_wowlan_info_notif {
	struct iwl_wowlan_gtk_status_v3 gtk[2];          /*     0   488 */
	/* --- cacheline 7 boundary (448 bytes) was 40 bytes ago --- */
	struct iwl_wowlan_igtk_status igtk[2];           /*   488    80 */
	/* --- cacheline 8 boundary (512 bytes) was 56 bytes ago --- */
	__le64                     replay_ctr;           /*   568     8 */
	/* --- cacheline 9 boundary (576 bytes) --- */
	__le16                     pattern_number;       /*   576     2 */
	__le16                     reserved1;            /*   578     2 */
	__le16                     qos_seq_ctr[8];       /*   580    16 */
	__le32                     wakeup_reasons;       /*   596     4 */
	__le32                     num_of_gtk_rekeys;    /*   600     4 */
	__le32                     transmitted_ndps;     /*   604     4 */
	__le32                     received_beacons;     /*   608     4 */
	u8                         tid_tear_down;        /*   612     1 */
	u8                         station_id;           /*   613     1 */
	u8                         reserved2[2];         /*   614     2 */

	/* size: 616, cachelines: 10, members: 13 */
	/* last cacheline: 40 bytes */
};

Therefore, when the following assignments take place, actually no memory
has been allocated for those objects:

2743	notif->tid_tear_down = notif_v1->tid_tear_down;
2744	notif->station_id = notif_v1->station_id;

Fix this by allocating space for the whole notif object and zero out the
remaining space in memory after member station_id.

This also fixes the following -Warray-bounds issues:
 CC      drivers/net/wireless/intel/iwlwifi/mvm/d3.o
drivers/net/wireless/intel/iwlwifi/mvm/d3.c: In function ‘iwl_mvm_wait_d3_notif’:
drivers/net/wireless/intel/iwlwifi/mvm/d3.c:2743:30: warning: array subscript ‘struct iwl_wowlan_info_notif[0]’ is partly outside array bounds of ‘unsigned char[612]’ [-Warray-bounds=]
 2743 |                         notif->tid_tear_down = notif_v1->tid_tear_down;
      |
                 from drivers/net/wireless/intel/iwlwifi/mvm/d3.c:7:
In function ‘kmemdup’,
    inlined from ‘iwl_mvm_wait_d3_notif’ at drivers/net/wireless/intel/iwlwifi/mvm/d3.c:2735:12:
include/linux/fortify-string.h:765:16: note: object of size 612 allocated by ‘__real_kmemdup’
  765 |         return __real_kmemdup(p, size, gfp);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/intel/iwlwifi/mvm/d3.c: In function ‘iwl_mvm_wait_d3_notif’:
drivers/net/wireless/intel/iwlwifi/mvm/d3.c:2744:30: warning: array subscript ‘struct iwl_wowlan_info_notif[0]’ is partly outside array bounds of ‘unsigned char[612]’ [-Warray-bounds=]
 2744 |                         notif->station_id = notif_v1->station_id;
      |                              ^~
In function ‘kmemdup’,
    inlined from ‘iwl_mvm_wait_d3_notif’ at drivers/net/wireless/intel/iwlwifi/mvm/d3.c:2735:12:
include/linux/fortify-string.h:765:16: note: object of size 612 allocated by ‘__real_kmemdup’
  765 |         return __real_kmemdup(p, size, gfp);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~

Link: https://github.com/KSPP/linux/issues/306
Fixes: 905d50ddbc83 ("wifi: iwlwifi: mvm: support wowlan info notification version 2")
Cc: stable@vger.kernel.org
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Acked-by: Gregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/ZHpGN555FwAKGduH@work
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-06-14 11:15:26 +02:00
..
accessibility
acpi ACPI: resource: Add IRQ override quirk for LG UltraPC 17U70P 2023-06-09 10:34:14 +02:00
amba
android binder: fix UAF of alloc->vma in race with munmap() 2023-05-30 14:03:19 +01:00
ata ata: libata-scsi: Use correct device no in ata_find_dev() 2023-06-09 10:34:21 +02:00
atm atm: idt77252: fix kmemleak when rmmod idt77252 2023-03-30 12:49:09 +02:00
auxdisplay auxdisplay: hd44780: Fix potential memory leak in hd44780_remove() 2023-03-11 13:55:16 +01:00
base regmap: Account for register length when chunking 2023-06-09 10:34:28 +02:00
bcma
block ublk: fix AB-BA lockdep warning 2023-06-09 10:34:16 +02:00
bluetooth Bluetooth: btrtl: Add the support for RTL8851B 2023-05-24 17:32:40 +01:00
bus bus: mhi: host: Range check CHDBOFF and ERDBOFF 2023-05-11 23:03:05 +09:00
cdrom
char tpm, tpm_tis: Request threaded interrupt handler 2023-06-09 10:34:28 +02:00
clk clk: rockchip: rk3399: allow clk_cifout to force clk_cifout_src to reparent 2023-05-11 23:03:40 +09:00
clocksource clocksource/drivers/davinci: Fix memory leak in davinci_timer_register when init fails 2023-05-11 23:03:35 +09:00
comedi
connector
counter counter: 104-quad-8: Fix Synapse action reported for Index signals 2023-04-13 16:55:31 +02:00
cpufreq cpufreq: amd-pstate: Add ->fast_switch() callback 2023-06-05 09:26:21 +02:00
cpuidle RISC-V: Align SBI probe implementation with spec 2023-05-11 23:03:04 +09:00
crypto crypto: sun8i-ss - Fix a test in sun8i_ss_setup_ivs() 2023-05-17 11:53:40 +02:00
cxl cxl: Wait Memory_Info_Valid before access memory related info 2023-05-30 14:03:32 +01:00
dax dax/kmem: Fix leak of memory-hotplug resources 2023-03-10 09:34:25 +01:00
dca
devfreq
dio
dma dmaengine: pl330: rename _start to prevent build error 2023-06-09 10:34:00 +02:00
dma-buf dma-buf: actually set signaling bit for private stub fences 2023-02-09 11:28:23 +01:00
edac qcom: llcc/edac: Support polling mode for ECC handling 2023-05-17 11:53:28 +02:00
eisa
extcon
firewire
firmware arm64: efi: Use SMBIOS processor version to key off Ampere quirk 2023-06-09 10:34:29 +02:00
fpga fpga: bridge: fix kernel-doc parameter description 2023-05-11 23:03:27 +09:00
fsi
gnss
gpio gpio-f7188x: fix chip name and pin count on Nuvoton chip 2023-06-05 09:26:18 +02:00
gpu drm/amd/display: Reduce sdp bw after urgent to 90% 2023-06-14 11:15:26 +02:00
greybus
hid HID: wacom: avoid integer overflow in wacom_intuos_inout() 2023-06-09 10:34:18 +02:00
hsi
hte hte: tegra-194: Fix off by one in tegra_hte_map_to_line_id() 2023-05-11 23:03:38 +09:00
hv Drivers: vmbus: Check for channel allocation before looking up relids 2023-04-13 16:55:18 +02:00
hwmon hwmon: (k10temp) Add PCI ID for family 19, model 78h 2023-06-09 10:34:08 +02:00
hwspinlock
hwtracing coresight: Fix signedness bug in tmc_etr_buf_insert_barrier_packet() 2023-05-30 14:03:22 +01:00
i2c i2c: tegra: Fix PEC support for SMBUS block read 2023-05-17 11:53:34 +02:00
i3c
idle Revert "cpuidle, intel_idle: Fix CPUIDLE_FLAG_IRQ_ENABLE *again*" 2023-04-06 12:10:58 +02:00
iio iio: dac: build ad5758 driver when AD5758 is selected 2023-06-09 10:34:19 +02:00
infiniband RDMA/irdma: Fix Local Invalidate fencing 2023-06-09 10:34:02 +02:00
input Input: fix open count when closing inhibited device 2023-06-14 11:15:23 +02:00
interconnect interconnect: qcom: rpm: drop bogus pm domain attach 2023-05-11 23:03:28 +09:00
iommu iommu/amd/pgtbl_v2: Fix domain max address 2023-06-09 10:34:28 +02:00
ipack
irqchip irqchip/mips-gic: Use raw spinlock for gic_lock 2023-05-30 14:03:20 +01:00
isdn
leds leds: tca6507: Fix error handling of using fwnode_property_read_string 2023-05-11 23:03:36 +09:00
macintosh macintosh: via-pmu-led: requires ATA to be set 2023-05-11 23:03:31 +09:00
mailbox mailbox: mailbox-test: fix a locking issue in mbox_test_message_write() 2023-06-09 10:34:17 +02:00
mcb mcb-pci: Reallocate memory region to avoid memory overlapping 2023-05-24 17:32:41 +01:00
md md/raid5: fix miscalculation of 'end_sector' in raid5_read_one_chunk() 2023-06-09 10:34:20 +02:00
media media: uvcvideo: Don't expose unsupported formats to userspace 2023-06-09 10:34:18 +02:00
memory memory: tegra30-emc: fix interconnect registration race 2023-03-22 13:33:56 +01:00
memstick memstick: r592: Fix UAF bug in r592_remove due to race condition 2023-05-24 17:32:35 +01:00
message scsi: message: mptlan: Fix use after free bug in mptlan_remove() due to race condition 2023-05-24 17:32:37 +01:00
mfd mfd: intel-lpss: Add Intel Meteor Lake PCH-S LPSS PCI IDs 2023-05-24 17:32:42 +01:00
misc misc: fastrpc: reject new invocations during device removal 2023-06-09 10:34:20 +02:00
mmc mmc: pwrseq: sd8787: Fix WILC CHIP_EN and RESETN toggling order 2023-06-09 10:34:22 +02:00
most
mtd mtdchar: mark bits of ioctl handler noinline 2023-06-09 10:34:24 +02:00
mux
net wifi: iwlwifi: mvm: Fix -Warray-bounds bug in iwl_mvm_wait_d3_notif() 2023-06-14 11:15:26 +02:00
nfc nfc: st-nci: Fix use after free bug in ndlc_remove due to race condition 2023-03-22 13:33:46 +01:00
ntb
nubus
nvdimm cxl/pmem: Fix nvdimm registration races 2023-03-10 09:34:20 +01:00
nvme nvme-pci: Add quirk for Teamgroup MP33 SSD 2023-06-09 10:34:16 +02:00
nvmem nvmem: core: fix return value 2023-02-09 11:28:25 +01:00
of of: Fix modalias string generation 2023-05-11 23:03:28 +09:00
opp OPP: fix error checking in opp_migrate_dentry() 2023-03-10 09:33:01 +01:00
parisc parisc: Replace regular spinlock with spin_trylock on panic path 2023-05-24 17:32:42 +01:00
parport
pci PCI/PM: Extend D3hot delay for NVIDIA HDA controllers 2023-05-11 23:03:29 +09:00
pcmcia
peci
perf perf/arm-cmn: Fix port detection for CMN-700 2023-05-11 23:03:16 +09:00
phy phy: qcom-qmp-pcie-msm8996: fix init-count imbalance 2023-06-09 10:34:23 +02:00
pinctrl pinctrl-bcm2835.c: fix race condition when setting gpio dir 2023-05-11 23:03:37 +09:00
platform platform/surface: aggregator_tabletsw: Add support for book mode in KIP subsystem 2023-06-14 11:15:15 +02:00
pnp
power power: supply: sbs-charger: Fix INHIBITED bit for Status reg 2023-05-30 14:03:22 +01:00
powercap powercap: fix possible name leak in powercap_register_zone() 2023-03-10 09:32:56 +01:00
pps
ps3
ptp ptp_qoriq: fix memory leak in probe() 2023-04-06 12:10:44 +02:00
pwm pwm: mtk-disp: Configure double buffering before reading in .get_state() 2023-05-11 23:03:37 +09:00
rapidio
ras
regulator regulator: mt6359: add read check for PMIC MT6359 2023-05-30 14:03:33 +01:00
remoteproc remoteproc: imx_dsp_rproc: Fix kernel test robot sparse warning 2023-05-24 17:32:53 +01:00
reset
rpmsg rpmsg: glink: Propagate TX failures in intentless mode as well 2023-05-11 23:03:16 +09:00
rtc rtc: k3: handle errors while enabling wake irq 2023-05-11 23:03:33 +09:00
s390 s390/pkey: zeroize key blobs 2023-06-09 10:34:13 +02:00
sbus
scsi scsi: megaraid_sas: Add flexible array member for SGLs 2023-06-14 11:15:15 +02:00
sh
siox
slimbus
soc soc: qcom: llcc: Do not create EDAC platform device on SDM845 2023-05-17 11:53:28 +02:00
soundwire soundwire: bus: Fix unbalanced pm_runtime_put() causing usage count underflow 2023-05-24 17:32:42 +01:00
spi spi: qup: Request DMA before enabling clocks 2023-06-14 11:15:15 +02:00
spmi spmi: Add a check for remove callback when removing a SPMI driver 2023-05-11 23:03:31 +09:00
ssb
staging staging: axis-fifo: initialize timeouts in init only 2023-05-24 17:32:40 +01:00
target scsi: target: iscsit: Free cmds before session free 2023-05-24 17:32:37 +01:00
tc
tee optee: fix uninited async notif value 2023-05-30 14:03:22 +01:00
thermal thermal/drivers/mediatek: Use devm_of_iomap to avoid resource leak in mtk_thermal_probe 2023-05-11 23:03:37 +09:00
thunderbolt thunderbolt: Clear registers properly when auto clear isn't in use 2023-05-24 17:32:51 +01:00
tty serial: cpm_uart: Fix a COMPILE_TEST dependency 2023-06-09 10:34:26 +02:00
ufs scsi: ufs: ufs-pci: Add support for Intel Lunar Lake 2023-05-24 17:32:37 +01:00
uio
usb usb: gadget: f_fs: Add unbind event before functionfs_unbind 2023-06-09 10:34:20 +02:00
vdpa vp_vdpa: fix the crash in hot unplug with vp_vdpa 2023-03-22 13:34:03 +01:00
vfio vfio/type1: check pfn valid before converting to struct page 2023-06-05 09:26:19 +02:00
vhost vhost_vdpa: fix unmap process in no-batch mode 2023-05-11 23:03:41 +09:00
video fbcon: Fix null-ptr-deref in soft_cursor 2023-06-09 10:34:26 +02:00
virt virt/coco/sev-guest: Double-buffer messages 2023-05-11 23:03:10 +09:00
virtio virtio_ring: don't update event idx on get_buf 2023-05-11 23:03:31 +09:00
vlynq
w1
watchdog watchdog: menz069_wdt: fix watchdog initialisation 2023-06-09 10:34:07 +02:00
xen xen/pvcalls-back: fix double frees with pvcalls_new_active_socket() 2023-05-30 14:03:32 +01:00
zorro
Kconfig
Makefile