ci starts bisection 2025-09-16 03:56:15.576486794 +0000 UTC m=+374057.963235206 bisecting cause commit starting from f83ec76bf285bea5727f478a68b894f5543ca76e building syzkaller on e2beed91937c0ace342f19a2e9afb67adb3a828a ensuring issue is reproducible on original commit f83ec76bf285bea5727f478a68b894f5543ca76e testing commit f83ec76bf285bea5727f478a68b894f5543ca76e gcc compiler: gcc (Debian 12.2.0-14+deb12u1) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40 kernel signature: df98daf25eaed4c02140b4fde035fea0ccf9754f6cc931c1473196c3c00d8c10 all runs: crashed: WARNING in maybe_exit_scc representative crash: WARNING in maybe_exit_scc, types: [WARNING] check whether we can drop unnecessary instrumentation disabling configs for [ubsan kasan locking atomic_sleep hang memleak], they are not needed testing commit f83ec76bf285bea5727f478a68b894f5543ca76e gcc compiler: gcc (Debian 12.2.0-14+deb12u1) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40 kernel signature: 9c32036204501284f4ef53a2d114efed6c7fdfcdd3b1e90fac61b0b6266a2d8a all runs: crashed: WARNING in maybe_exit_scc representative crash: WARNING in maybe_exit_scc, types: [WARNING] the bug reproduces without the instrumentation disabling configs for [kasan locking atomic_sleep hang memleak ubsan], they are not needed kconfig minimization: base=4093 full=8499 leaves diff=2190 split chunks (needed=false): <2190> split chunk #0 of len 2190 into 5 parts testing without sub-chunk 1/5 disabling configs for [hang memleak ubsan kasan locking atomic_sleep], they are not needed testing commit f83ec76bf285bea5727f478a68b894f5543ca76e gcc compiler: gcc (Debian 12.2.0-14+deb12u1) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40 kernel signature: 7322a11bd16bcba3bf387509873ac5e5b5ac36827a455c40d27f51cd2a5f303d all runs: crashed: WARNING in maybe_exit_scc representative crash: WARNING in maybe_exit_scc, types: [WARNING] the chunk can be dropped testing without sub-chunk 2/5 disabling configs for [ubsan kasan locking atomic_sleep hang memleak], they are not needed testing commit f83ec76bf285bea5727f478a68b894f5543ca76e gcc compiler: gcc (Debian 12.2.0-14+deb12u1) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40 kernel signature: e862ca18323f32e21e101de1ab03b98c608f93aeea0d9ab8a232ada673cc89c7 all runs: crashed: WARNING in maybe_exit_scc representative crash: WARNING in maybe_exit_scc, types: [WARNING] the chunk can be dropped testing without sub-chunk 3/5 disabling configs for [hang memleak ubsan kasan locking atomic_sleep], they are not needed testing commit f83ec76bf285bea5727f478a68b894f5543ca76e gcc compiler: gcc (Debian 12.2.0-14+deb12u1) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40 kernel signature: 7ab1a568a786f580516e48772c48edaa936e56b2e23bf885be7da90e81fe223a all runs: crashed: WARNING in maybe_exit_scc representative crash: WARNING in maybe_exit_scc, types: [WARNING] the chunk can be dropped testing without sub-chunk 4/5 disabling configs for [locking atomic_sleep hang memleak ubsan kasan], they are not needed testing commit f83ec76bf285bea5727f478a68b894f5543ca76e gcc compiler: gcc (Debian 12.2.0-14+deb12u1) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40 kernel signature: 462f6780f27e11cf8aac9f0ddd052a9e2aba41c00b4d0c8392579fff95ee839f all runs: crashed: WARNING in maybe_exit_scc representative crash: WARNING in maybe_exit_scc, types: [WARNING] the chunk can be dropped testing without sub-chunk 5/5 disabling configs for [kasan locking atomic_sleep hang memleak ubsan], they are not needed testing commit f83ec76bf285bea5727f478a68b894f5543ca76e gcc compiler: gcc (Debian 12.2.0-14+deb12u1) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40 kernel signature: 36da9310665e02cddacda37c777cac12d8ce275b4854d2b035b86f7cb9b875ef all runs: OK false negative chance: 0.000 minimized to 438 configs; suspects: [ARCH_ENABLE_MEMORY_HOTREMOVE ATM BCMA BLK_DEV_ZONED BPF_SYSCALL CARDBUS CFG80211 CFG80211_WEXT CMA COMMON_CLK CONTIG_ALLOC DVB_CORE EXTCON GPIOLIB HID_ZEROPLUS I2C_MUX IIO IOMMUFD IRQ_REMAP KVM KVM_INTEL LIBNVDIMM MEDIA_ANALOG_TV_SUPPORT MEDIA_CAMERA_SUPPORT MEDIA_CEC_SUPPORT MEDIA_CONTROLLER MEDIA_DIGITAL_TV_SUPPORT MEDIA_RADIO_SUPPORT MEDIA_SDR_SUPPORT MEDIA_SUPPORT MEDIA_TEST_SUPPORT MEDIA_USB_SUPPORT MEMORY_HOTPLUG MEMORY_HOTREMOVE MFD_VIPERBOARD NOP_USB_XCEIV PARPORT PCCARD PCMCIA PHONET RADIO_ADAPTERS RADIO_SI470X RADIO_SI4713 RC_CORE RFKILL SND SOUND SPI SSB TAP TARGET_CORE TUN USBIP_CORE USBIP_VUDC USBPCWATCHDOG USB_ACM USB_ADUTUX USB_AIRSPY USB_ALI_M5632 USB_AMD5536UDC USB_AN2720 USB_APPLEDISPLAY USB_ARMLINUX USB_ATM USB_BDC_UDC USB_BELKIN USB_C67X00_HCD USB_CATC USB_CDC_PHONET USB_CDNS2_UDC USB_CDNS3 USB_CDNS3_GADGET USB_CDNS3_HOST USB_CDNS3_PCI_WRAP USB_CDNSP_GADGET USB_CDNSP_HOST USB_CDNSP_PCI USB_CDNS_HOST USB_CDNS_SUPPORT USB_CHAOSKEY USB_CHIPIDEA USB_CHIPIDEA_GENERIC USB_CHIPIDEA_HOST USB_CHIPIDEA_MSM USB_CHIPIDEA_NPCM USB_CHIPIDEA_PCI USB_CHIPIDEA_UDC USB_CONFIGFS USB_CONFIGFS_ACM USB_CONFIGFS_ECM USB_CONFIGFS_ECM_SUBSET USB_CONFIGFS_EEM USB_CONFIGFS_F_FS USB_CONFIGFS_F_HID USB_CONFIGFS_F_LB_SS USB_CONFIGFS_F_MIDI USB_CONFIGFS_F_MIDI2 USB_CONFIGFS_F_PRINTER USB_CONFIGFS_F_TCM USB_CONFIGFS_F_UAC1 USB_CONFIGFS_F_UAC1_LEGACY USB_CONFIGFS_F_UAC2 USB_CONFIGFS_F_UVC USB_CONFIGFS_MASS_STORAGE USB_CONFIGFS_NCM USB_CONFIGFS_OBEX USB_CONFIGFS_PHONET USB_CONFIGFS_RNDIS USB_CONFIGFS_SERIAL USB_CONN_GPIO USB_CXACRU USB_CYPRESS_CY7C63 USB_CYTHERM USB_DSBR USB_DUMMY_HCD USB_DWC2 USB_DWC2_HOST USB_DWC2_PCI USB_DWC3 USB_DWC3_GADGET USB_DWC3_HAPS USB_DWC3_OF_SIMPLE USB_DWC3_PCI USB_DWC3_ULPI USB_DYNAMIC_MINORS USB_EG20T USB_EHCI_FSL USB_EHCI_HCD_PLATFORM USB_EHCI_ROOT_HUB_TT USB_EHSET_TEST_FIXTURE USB_EMI26 USB_EMI62 USB_EPSON2888 USB_EZUSB_FX2 USB_FEW_INIT_RETRIES USB_F_ACM USB_F_ECM USB_F_EEM USB_F_FS USB_F_HID USB_F_MASS_STORAGE USB_F_MIDI USB_F_MIDI2 USB_F_NCM USB_F_OBEX USB_F_PHONET USB_F_PRINTER USB_F_RNDIS USB_F_SERIAL USB_F_SS_LB USB_F_SUBSET USB_F_TCM USB_F_UAC1 USB_F_UAC1_LEGACY USB_F_UAC2 USB_F_UVC USB_GADGET USB_GADGETFS USB_GADGET_DEBUG_FILES USB_GADGET_DEBUG_FS USB_GL860 USB_GOKU USB_GR_UDC USB_GSPCA USB_GSPCA_BENQ USB_GSPCA_CONEX USB_GSPCA_CPIA1 USB_GSPCA_DTCS033 USB_GSPCA_ETOMS USB_GSPCA_FINEPIX USB_GSPCA_JEILINJ USB_GSPCA_JL2005BCD USB_GSPCA_KINECT USB_GSPCA_KONICA USB_GSPCA_MARS USB_GSPCA_MR97310A USB_GSPCA_NW80X USB_GSPCA_OV519 USB_GSPCA_OV534 USB_GSPCA_OV534_9 USB_GSPCA_PAC207 USB_GSPCA_PAC7302 USB_GSPCA_PAC7311 USB_GSPCA_SE401 USB_GSPCA_SN9C2028 USB_GSPCA_SN9C20X USB_GSPCA_SONIXB USB_GSPCA_SONIXJ USB_GSPCA_SPCA1528 USB_GSPCA_SPCA500 USB_GSPCA_SPCA501 USB_GSPCA_SPCA505 USB_GSPCA_SPCA506 USB_GSPCA_SPCA508 USB_GSPCA_SPCA561 USB_GSPCA_SQ905 USB_GSPCA_SQ905C USB_GSPCA_SQ930X USB_GSPCA_STK014 USB_GSPCA_STK1135 USB_GSPCA_STV0680 USB_GSPCA_SUNPLUS USB_GSPCA_T613 USB_GSPCA_TOPRO USB_GSPCA_TOUPTEK USB_GSPCA_TV8532 USB_GSPCA_VC032X USB_GSPCA_VICAM USB_GSPCA_XIRLINK_CIT USB_GSPCA_ZC3XX USB_HACKRF USB_HCD_BCMA USB_HCD_SSB USB_HSIC_USB3503 USB_HSIC_USB4604 USB_HSO USB_HUB_USB251XB USB_IDMOUSE USB_IOWARRIOR USB_IPHETH USB_ISIGHTFW USB_ISP116X_HCD USB_ISP1301 USB_ISP1760 USB_ISP1760_DUAL_ROLE USB_ISP1760_HCD USB_ISP1761_UDC USB_KAWETH USB_KC2190 USB_KEENE USB_LAN78XX USB_LCD USB_LD USB_LEDS_TRIGGER_USBPORT USB_LED_TRIG USB_LEGOTOWER USB_LGM_PHY USB_LIBCOMPOSITE USB_LINK_LAYER_TEST USB_M5602 USB_MA901 USB_MAX3420_UDC USB_MAX3421_HCD USB_MDC800 USB_MICROTEK USB_MR800 USB_MSI2500 USB_MUSB_DUAL_ROLE USB_MUSB_HDRC USB_NET2280 USB_NET_AQC111 USB_NET_AX88179_178A USB_NET_AX8817X USB_NET_CDCETHER USB_NET_CDC_EEM USB_NET_CDC_MBIM USB_NET_CDC_NCM USB_NET_CDC_SUBSET USB_NET_CDC_SUBSET_ENABLE USB_NET_CH9200 USB_NET_CX82310_ETH USB_NET_DM9601 USB_NET_GL620A USB_NET_HUAWEI_CDC_NCM USB_NET_INT51X1 USB_NET_KALMIA USB_NET_MCS7830 USB_NET_NET1080 USB_NET_PLUSB USB_NET_QMI_WWAN USB_NET_RNDIS_HOST USB_NET_SMSC75XX USB_NET_SMSC95XX USB_NET_SR9700 USB_NET_SR9800 USB_NET_ZAURUS USB_OHCI_HCD_PLATFORM USB_OTG USB_OTG_FSM USB_OXU210HP_HCD USB_PEGASUS USB_PULSE8_CEC USB_PWC USB_PWC_INPUT_EVDEV USB_PXA27X USB_R8A66597 USB_R8A66597_HCD USB_RAINSHADOW_CEC USB_RAREMONO USB_RAW_GADGET USB_RTL8150 USB_RTL8152 USB_RTL8153_ECM USB_S2255 USB_SERIAL USB_SERIAL_AIRCABLE USB_SERIAL_ARK3116 USB_SERIAL_BELKIN USB_SERIAL_CH341 USB_SERIAL_CONSOLE USB_SERIAL_CP210X USB_SERIAL_CYBERJACK USB_SERIAL_CYPRESS_M8 USB_SERIAL_DEBUG USB_SERIAL_DIGI_ACCELEPORT USB_SERIAL_EDGEPORT USB_SERIAL_EDGEPORT_TI USB_SERIAL_EMPEG USB_SERIAL_F81232 USB_SERIAL_F8153X USB_SERIAL_FTDI_SIO USB_SERIAL_GARMIN USB_SERIAL_GENERIC USB_SERIAL_IPAQ USB_SERIAL_IPW USB_SERIAL_IR USB_SERIAL_IUU USB_SERIAL_KEYSPAN USB_SERIAL_KEYSPAN_PDA USB_SERIAL_KLSI USB_SERIAL_KOBIL_SCT USB_SERIAL_MCT_U232 USB_SERIAL_METRO USB_SERIAL_MOS7715_PARPORT USB_SERIAL_MOS7720 USB_SERIAL_MOS7840 USB_SERIAL_MXUPORT USB_SERIAL_NAVMAN USB_SERIAL_OMNINET USB_SERIAL_OPTICON USB_SERIAL_OPTION USB_SERIAL_OTI6858 USB_SERIAL_PL2303 USB_SERIAL_QCAUX USB_SERIAL_QT2 USB_SERIAL_QUALCOMM USB_SERIAL_SAFE USB_SERIAL_SIERRAWIRELESS USB_SERIAL_SIMPLE USB_SERIAL_SPCP8X5 USB_SERIAL_SSU100 USB_SERIAL_SYMBOL USB_SERIAL_TI USB_SERIAL_UPD78F0730 USB_SERIAL_VISOR USB_SERIAL_WHITEHEAT USB_SERIAL_WISHBONE USB_SERIAL_WWAN USB_SERIAL_XR USB_SERIAL_XSENS_MT USB_SEVSEG USB_SI470X USB_SI4713 USB_SIERRA_NET USB_SISUSBVGA USB_SL811_CS USB_SL811_HCD USB_SL811_HCD_ISO USB_SNP_CORE USB_SPEEDTOUCH USB_STORAGE_ALAUDA USB_STORAGE_CYPRESS_ATACB USB_STORAGE_DATAFAB USB_STORAGE_ENE_UB6250 USB_STORAGE_FREECOM USB_STORAGE_ISD200 USB_STORAGE_JUMPSHOT USB_STORAGE_KARMA USB_STORAGE_ONETOUCH USB_STORAGE_SDDR09 USB_STORAGE_SDDR55 USB_STORAGE_USBAT USB_STV06XX USB_TEST USB_TMC USB_TRANCEVIBRATOR USB_UAS USB_UEAGLEATM USB_ULPI_BUS USB_USBNET USB_USS720 USB_U_AUDIO USB_U_ETHER USB_U_SERIAL USB_VIDEO_CLASS USB_VIDEO_CLASS_INPUT_EVDEV USB_VL600 USB_WDM USB_XHCI_DBGCAP USB_XHCI_PCI_RENESAS USB_XHCI_PLATFORM USB_XUSBATM USB_YUREX USERFAULTFD USERIO USER_RETURN_NOTIFIER UVC_COMMON U_SERIAL_CONSOLE V4L2_ASYNC V4L2_FWNODE V4L2_MEM2MEM_DEV V4L_TEST_DRIVERS VALIDATE_FS_PARSER VDPA VDPA_SIM VDPA_SIM_BLOCK VDPA_SIM_NET VETH VFIO VFIO_DEVICE_CDEV VFIO_PCI VFIO_PCI_CORE VFIO_PCI_INTX VFIO_VIRQFD VGASTATE VHOST VHOST_CROSS_ENDIAN_LEGACY VHOST_ENABLE_FORK_OWNER_CONTROL VHOST_IOTLB VHOST_NET VHOST_RING VHOST_TASK VHOST_VDPA VHOST_VSOCK VIDEO VIDEOBUF2_CORE VIDEOBUF2_DMA_CONTIG VIDEOBUF2_DMA_SG VIDEOBUF2_MEMOPS VIDEOBUF2_V4L2 VIDEOBUF2_VMALLOC VIDEOMODE_HELPERS VIDEO_AU0828 VIDEO_AU0828_RC VIDEO_AU0828_V4L2 VIDEO_CAMERA_LENS VIDEO_CS53L32A VIDEO_CX231XX VIDEO_CX231XX_ALSA VIDEO_CX231XX_DVB VIDEO_CX231XX_RC VIDEO_CX2341X VIDEO_CX25840 VIDEO_DEV VIDEO_EM28XX VIDEO_EM28XX_ALSA VIDEO_EM28XX_DVB VIDEO_EM28XX_RC VIDEO_EM28XX_V4L2 VIDEO_GO7007 VIDEO_GO7007_LOADER VIDEO_GO7007_USB VIDEO_GO7007_USB_S2250_BOARD VIDEO_HDPVR VIDEO_MSP3400 VIDEO_PVRUSB2 VIDEO_PVRUSB2_DVB VIDEO_PVRUSB2_SYSFS VIDEO_SAA711X VIDEO_STK1160 VIDEO_TUNER VIDEO_TVEEPROM VIDEO_USBTV VIDEO_V4L2_I2C VIDEO_V4L2_SUBDEV_API VIDEO_V4L2_TPG VIDEO_VICODEC VIDEO_VIM2M VIDEO_VIMC VIDEO_VIVID VIDEO_VIVID_CEC VIDEO_WM8775 VIPERBOARD_ADC VIRTIO_BALLOON VIRTIO_DMA_SHARED_BUFFER VIRTIO_MEM VIRTIO_MMIO VIRTIO_MMIO_CMDLINE_DEVICES VIRTIO_PMEM VIRTIO_VDPA VIRTIO_VSOCKETS VIRTIO_VSOCKETS_COMMON VIRT_WIFI VLAN_8021Q VLAN_8021Q_GVRP VLAN_8021Q_MVRP VMAP_PFN VMWARE_VMCI VMXNET3 VP_VDPA VSOCKETS VSOCKETS_DIAG VSOCKETS_LOOPBACK VSOCKMON VT_HW_CONSOLE_BINDING VXFS_FS WANT_DEV_COREDUMP WEXT_CORE WEXT_PROC WIREGUARD WIRELESS WLAN WLAN_VENDOR_ADMTEK WLAN_VENDOR_SILABS X86_SGX X86_SGX_KVM X86_USER_SHADOW_STACK X86_X32_ABI XDP_SOCKETS XDP_SOCKETS_DIAG XFRM_ESPINTCP XFRM_INTERFACE XFRM_IPCOMP XFRM_MIGRATE XFRM_OFFLOAD XFRM_STATISTICS XFRM_SUB_POLICY XFRM_USER_COMPAT XFS_FS XFS_POSIX_ACL XFS_QUOTA XFS_RT XILLYBUS_CLASS XILLYUSB XOR_BLOCKS YENTA YENTA_ENE_TUNE YENTA_O2 YENTA_RICOH YENTA_TI YENTA_TOSHIBA ZEROPLUS_FF ZLIB_DEFLATE ZONEFS_FS ZPOOL ZRAM ZRAM_BACKEND_FORCE_LZO ZRAM_BACKEND_LZO ZRAM_DEF_COMP_LZO ZSMALLOC ZSTD_COMPRESS ZSWAP ZSWAP_COMPRESSOR_DEFAULT_842 ZSWAP_DEFAULT_ON ZSWAP_SHRINKER_DEFAULT_ON ZSWAP_ZPOOL_DEFAULT_ZSMALLOC] disabling configs for [ubsan kasan locking atomic_sleep hang memleak], they are not needed picked [v6.16 v6.15 v6.14 v6.12 v6.10 v6.8 v6.6 v6.4 v6.1 v5.18 v5.15 v5.12 v5.9 v5.6 v5.3 v5.0 v4.19] out of 39 release tags testing release v6.16 testing commit 038d61fd642278bab63ee8ef722c50d10ab01e8f gcc compiler: gcc (Debian 12.2.0-14+deb12u1) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40 kernel signature: c030213e35a70a8dbdeb814e1daf19a0fde55ac37422c35796c2f23c7023c776 all runs: OK false negative chance: 0.000 # git bisect start f83ec76bf285bea5727f478a68b894f5543ca76e 038d61fd642278bab63ee8ef722c50d10ab01e8f Bisecting: 7041 revisions left to test after this (roughly 13 steps) [7d767a9528f6d203bca5e83faf1b8f2f6af3fc07] Merge tag 'for-linus-6.17-rc1-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip testing commit 7d767a9528f6d203bca5e83faf1b8f2f6af3fc07 gcc compiler: gcc (Debian 12.2.0-14+deb12u1) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40 kernel signature: fe3b8db58134c52fde40a01fca31e35a95102fcf2945312cbc75bd8b8057a771 all runs: crashed: WARNING in maybe_exit_scc representative crash: WARNING in maybe_exit_scc, types: [WARNING] # git bisect bad 7d767a9528f6d203bca5e83faf1b8f2f6af3fc07 Bisecting: 3345 revisions left to test after this (roughly 12 steps) [0f46f50845ce75bfaba62df0421084d23bb6a72f] Merge tag 'soc-drivers-6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc testing commit 0f46f50845ce75bfaba62df0421084d23bb6a72f gcc compiler: gcc (Debian 12.2.0-14+deb12u1) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40 kernel signature: 47435adc27e285ac813576857c97e750eab137f7607c5af7c2dc6673d5faa3e2 all runs: OK false negative chance: 0.000 # git bisect good 0f46f50845ce75bfaba62df0421084d23bb6a72f Bisecting: 1590 revisions left to test after this (roughly 11 steps) [126d85fb040559ba6654f51c0b587d280b041abb] Merge tag 'wireless-next-2025-07-24' of https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next testing commit 126d85fb040559ba6654f51c0b587d280b041abb gcc compiler: gcc (Debian 12.2.0-14+deb12u1) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40 kernel signature: 66970e3d1edea5f4e84b3e0d38e2758621b1319ba3e6f45749bba0bc7e7b6897 all runs: OK false negative chance: 0.000 # git bisect good 126d85fb040559ba6654f51c0b587d280b041abb Bisecting: 814 revisions left to test after this (roughly 10 steps) [3bb38c52719baa7f9cdbf200016ed481b4498290] Merge tag 'm68k-for-v6.17-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k testing commit 3bb38c52719baa7f9cdbf200016ed481b4498290 gcc compiler: gcc (Debian 12.2.0-14+deb12u1) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40 kernel signature: e6cd26204a0adb2fb4a3b233f96b93b6a62f4e68ed1af7191676a3ee038de518 all runs: OK false negative chance: 0.000 # git bisect good 3bb38c52719baa7f9cdbf200016ed481b4498290 Bisecting: 457 revisions left to test after this (roughly 9 steps) [8be4d31cb8aaeea27bde4b7ddb26e28a89062ebf] Merge tag 'net-next-6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next testing commit 8be4d31cb8aaeea27bde4b7ddb26e28a89062ebf gcc compiler: gcc (Debian 12.2.0-14+deb12u1) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40 kernel signature: 3ae3e2b7500d59642d2898de4511ea861f23b5c9176b324b0856a14caa062f35 all runs: OK false negative chance: 0.000 # git bisect good 8be4d31cb8aaeea27bde4b7ddb26e28a89062ebf Bisecting: 234 revisions left to test after this (roughly 8 steps) [d9104cec3e8fe4b458b74709853231385779001f] Merge tag 'bpf-next-6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next testing commit d9104cec3e8fe4b458b74709853231385779001f gcc compiler: gcc (Debian 12.2.0-14+deb12u1) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40 kernel signature: d37d39cd6368b5bb3bdaeb4efdf4ae5a66a922743115cd06f124fc84872206c0 all runs: crashed: WARNING in maybe_exit_scc representative crash: WARNING in maybe_exit_scc, types: [WARNING] # git bisect bad d9104cec3e8fe4b458b74709853231385779001f Bisecting: 111 revisions left to test after this (roughly 7 steps) [48d998af99f9e78ac8a8e405c50a7af64a5325a6] Merge branch 'vfs-6.17.bpf' of https://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs testing commit 48d998af99f9e78ac8a8e405c50a7af64a5325a6 gcc compiler: gcc (Debian 12.2.0-14+deb12u1) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40 kernel signature: 8d7aa626b9beb6cc5025907003cd3f52cb713a768287421def04410fd6386981 all runs: crashed: WARNING in do_check_common representative crash: WARNING in do_check_common, types: [WARNING] # git bisect bad 48d998af99f9e78ac8a8e405c50a7af64a5325a6 Bisecting: 55 revisions left to test after this (roughly 6 steps) [3d71b8b9abae68f6dfc434f779e1139370fbe891] bpf: Fix state use-after-free on push_stack() err testing commit 3d71b8b9abae68f6dfc434f779e1139370fbe891 gcc compiler: gcc (Debian 12.2.0-14+deb12u1) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40 kernel signature: 7099d0d6f652d21d08825dc46f32b1fddf17adee957ac27afdb7e95935e06830 all runs: crashed: WARNING in do_check_common representative crash: WARNING in do_check_common, types: [WARNING] # git bisect bad 3d71b8b9abae68f6dfc434f779e1139370fbe891 Bisecting: 27 revisions left to test after this (roughly 5 steps) [d77efc0ef5b0adb0de3c15f5c9d33ea6d60bd449] selftests/bpf: Add cookies check for tracing fill_link_info test testing commit d77efc0ef5b0adb0de3c15f5c9d33ea6d60bd449 gcc compiler: gcc (Debian 12.2.0-14+deb12u1) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40 kernel signature: 7c04cbc9f412fdf42695b8f5c5167475388c4c474b395a691d14aeb9a39ec73e all runs: OK false negative chance: 0.000 # git bisect good d77efc0ef5b0adb0de3c15f5c9d33ea6d60bd449 Bisecting: 13 revisions left to test after this (roughly 4 steps) [c9b03a11005f6c1b8945a69f456653e8cdb70fdb] bpf, doc: Improve wording of docs testing commit c9b03a11005f6c1b8945a69f456653e8cdb70fdb gcc compiler: gcc (Debian 12.2.0-14+deb12u1) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40 kernel signature: 7bdea747382f714b738c1c3c3baceef4549191b590715de4eb276da7f2757a8f all runs: crashed: WARNING in do_check_common representative crash: WARNING in do_check_common, types: [WARNING] # git bisect bad c9b03a11005f6c1b8945a69f456653e8cdb70fdb Bisecting: 6 revisions left to test after this (roughly 3 steps) [03c68a0f8c68936a0bb915b030693923784724cb] bpf, arm64, powerpc: Add bpf_jit_bypass_spec_v1/v4() testing commit 03c68a0f8c68936a0bb915b030693923784724cb gcc compiler: gcc (Debian 12.2.0-14+deb12u1) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40 kernel signature: e619718e01ce9a5b1c501c4dccee4b351bf0ce436ef3d1b899b08c721ec3338a all runs: OK false negative chance: 0.000 # git bisect good 03c68a0f8c68936a0bb915b030693923784724cb Bisecting: 3 revisions left to test after this (roughly 2 steps) [d6f1c85f22534d2d9fea9b32645da19c91ebe7d2] bpf: Fall back to nospec for Spectre v1 testing commit d6f1c85f22534d2d9fea9b32645da19c91ebe7d2 gcc compiler: gcc (Debian 12.2.0-14+deb12u1) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40 kernel signature: 8af5e9034cecf73258226dda0383887af00d7247a7b0f594696f1feb740c5144 all runs: crashed: WARNING in do_check_common representative crash: WARNING in do_check_common, types: [WARNING] # git bisect bad d6f1c85f22534d2d9fea9b32645da19c91ebe7d2 Bisecting: 0 revisions left to test after this (roughly 1 step) [9124a4508007f146206a279f0c5e81dde314bda1] bpf: Rename sanitize_stack_spill to nospec_result testing commit 9124a4508007f146206a279f0c5e81dde314bda1 gcc compiler: gcc (Debian 12.2.0-14+deb12u1) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40 kernel signature: 27ac682bf2e9b81bdb3764e06e9d2ba5ab1eca1ee5569f31dcf080aec127e861 all runs: OK false negative chance: 0.000 # git bisect good 9124a4508007f146206a279f0c5e81dde314bda1 d6f1c85f22534d2d9fea9b32645da19c91ebe7d2 is the first bad commit commit d6f1c85f22534d2d9fea9b32645da19c91ebe7d2 Author: Luis Gerhorst Date: Tue Jun 3 23:24:28 2025 +0200 bpf: Fall back to nospec for Spectre v1 This implements the core of the series and causes the verifier to fall back to mitigating Spectre v1 using speculation barriers. The approach was presented at LPC'24 [1] and RAID'24 [2]. If we find any forbidden behavior on a speculative path, we insert a nospec (e.g., lfence speculation barrier on x86) before the instruction and stop verifying the path. While verifying a speculative path, we can furthermore stop verification of that path whenever we encounter a nospec instruction. A minimal example program would look as follows: A = true B = true if A goto e f() if B goto e unsafe() e: exit There are the following speculative and non-speculative paths (`cur->speculative` and `speculative` referring to the value of the push_stack() parameters): - A = true - B = true - if A goto e - A && !cur->speculative && !speculative - exit - !A && !cur->speculative && speculative - f() - if B goto e - B && cur->speculative && !speculative - exit - !B && cur->speculative && speculative - unsafe() If f() contains any unsafe behavior under Spectre v1 and the unsafe behavior matches `state->speculative && error_recoverable_with_nospec(err)`, do_check() will now add a nospec before f() instead of rejecting the program: A = true B = true if A goto e nospec f() if B goto e unsafe() e: exit Alternatively, the algorithm also takes advantage of nospec instructions inserted for other reasons (e.g., Spectre v4). Taking the program above as an example, speculative path exploration can stop before f() if a nospec was inserted there because of Spectre v4 sanitization. In this example, all instructions after the nospec are dead code (and with the nospec they are also dead code speculatively). For this, it relies on the fact that speculation barriers generally prevent all later instructions from executing if the speculation was not correct: * On Intel x86_64, lfence acts as full speculation barrier, not only as a load fence [3]: An LFENCE instruction or a serializing instruction will ensure that no later instructions execute, even speculatively, until all prior instructions complete locally. [...] Inserting an LFENCE instruction after a bounds check prevents later operations from executing before the bound check completes. This was experimentally confirmed in [4]. * On AMD x86_64, lfence is dispatch-serializing [5] (requires MSR C001_1029[1] to be set if the MSR is supported, this happens in init_amd()). AMD further specifies "A dispatch serializing instruction forces the processor to retire the serializing instruction and all previous instructions before the next instruction is executed" [8]. As dispatch is not specific to memory loads or branches, lfence therefore also affects all instructions there. Also, if retiring a branch means it's PC change becomes architectural (should be), this means any "wrong" speculation is aborted as required for this series. * ARM's SB speculation barrier instruction also affects "any instruction that appears later in the program order than the barrier" [6]. * PowerPC's barrier also affects all subsequent instructions [7]: [...] executing an ori R31,R31,0 instruction ensures that all instructions preceding the ori R31,R31,0 instruction have completed before the ori R31,R31,0 instruction completes, and that no subsequent instructions are initiated, even out-of-order, until after the ori R31,R31,0 instruction completes. The ori R31,R31,0 instruction may complete before storage accesses associated with instructions preceding the ori R31,R31,0 instruction have been performed Regarding the example, this implies that `if B goto e` will not execute before `if A goto e` completes. Once `if A goto e` completes, the CPU should find that the speculation was wrong and continue with `exit`. If there is any other path that leads to `if B goto e` (and therefore `unsafe()`) without going through `if A goto e`, then a nospec will still be needed there. However, this patch assumes this other path will be explored separately and therefore be discovered by the verifier even if the exploration discussed here stops at the nospec. This patch furthermore has the unfortunate consequence that Spectre v1 mitigations now only support architectures which implement BPF_NOSPEC. Before this commit, Spectre v1 mitigations prevented exploits by rejecting the programs on all architectures. Because some JITs do not implement BPF_NOSPEC, this patch therefore may regress unpriv BPF's security to a limited extent: * The regression is limited to systems vulnerable to Spectre v1, have unprivileged BPF enabled, and do NOT emit insns for BPF_NOSPEC. The latter is not the case for x86 64- and 32-bit, arm64, and powerpc 64-bit and they are therefore not affected by the regression. According to commit a6f6a95f2580 ("LoongArch, bpf: Fix jit to skip speculation barrier opcode"), LoongArch is not vulnerable to Spectre v1 and therefore also not affected by the regression. * To the best of my knowledge this regression may therefore only affect MIPS. This is deemed acceptable because unpriv BPF is still disabled there by default. As stated in a previous commit, BPF_NOSPEC could be implemented for MIPS based on GCC's speculation_barrier implementation. * It is unclear which other architectures (besides x86 64- and 32-bit, ARM64, PowerPC 64-bit, LoongArch, and MIPS) supported by the kernel are vulnerable to Spectre v1. Also, it is not clear if barriers are available on these architectures. Implementing BPF_NOSPEC on these architectures therefore is non-trivial. Searching GCC and the kernel for speculation barrier implementations for these architectures yielded no result. * If any of those regressed systems is also vulnerable to Spectre v4, the system was already vulnerable to Spectre v4 attacks based on unpriv BPF before this patch and the impact is therefore further limited. As an alternative to regressing security, one could still reject programs if the architecture does not emit BPF_NOSPEC (e.g., by removing the empty BPF_NOSPEC-case from all JITs except for LoongArch where it appears justified). However, this will cause rejections on these archs that are likely unfounded in the vast majority of cases. In the tests, some are now successful where we previously had a false-positive (i.e., rejection). Change them to reflect where the nospec should be inserted (using __xlated_unpriv) and modify the error message if the nospec is able to mitigate a problem that previously shadowed another problem (in that case __xlated_unpriv does not work, therefore just add a comment). Define SPEC_V1 to avoid duplicating this ifdef whenever we check for nospec insns using __xlated_unpriv, define it here once. This also improves readability. PowerPC can probably also be added here. However, omit it for now because the BPF CI currently does not include a test. Limit it to EPERM, EACCES, and EINVAL (and not everything except for EFAULT and ENOMEM) as it already has the desired effect for most real-world programs. Briefly went through all the occurrences of EPERM, EINVAL, and EACCESS in verifier.c to validate that catching them like this makes sense. Thanks to Dustin for their help in checking the vendor documentation. [1] https://lpc.events/event/18/contributions/1954/ ("Mitigating Spectre-PHT using Speculation Barriers in Linux eBPF") [2] https://arxiv.org/pdf/2405.00078 ("VeriFence: Lightweight and Precise Spectre Defenses for Untrusted Linux Kernel Extensions") [3] https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/runtime-speculative-side-channel-mitigations.html ("Managed Runtime Speculative Execution Side Channel Mitigations") [4] https://dl.acm.org/doi/pdf/10.1145/3359789.3359837 ("Speculator: a tool to analyze speculative execution attacks and mitigations" - Section 4.6 "Stopping Speculative Execution") [5] https://www.amd.com/content/dam/amd/en/documents/processor-tech-docs/programmer-references/software-techniques-for-managing-speculation.pdf ("White Paper - SOFTWARE TECHNIQUES FOR MANAGING SPECULATION ON AMD PROCESSORS - REVISION 5.09.23") [6] https://developer.arm.com/documentation/ddi0597/2020-12/Base-Instructions/SB--Speculation-Barrier- ("SB - Speculation Barrier - Arm Armv8-A A32/T32 Instruction Set Architecture (2020-12)") [7] https://wiki.raptorcs.com/w/images/5/5f/OPF_PowerISA_v3.1C.pdf ("Power ISA™ - Version 3.1C - May 26, 2024 - Section 9.2.1 of Book III") [8] https://www.amd.com/content/dam/amd/en/documents/processor-tech-docs/programmer-references/40332.pdf ("AMD64 Architecture Programmer’s Manual Volumes 1–5 - Revision 4.08 - April 2024 - 7.6.4 Serializing Instructions") Signed-off-by: Luis Gerhorst Acked-by: Kumar Kartikeya Dwivedi Acked-by: Henriette Herzog Cc: Dustin Nguyen Cc: Maximilian Ott Cc: Milan Stephan Link: https://lore.kernel.org/r/20250603212428.338473-1-luis.gerhorst@fau.de Signed-off-by: Alexei Starovoitov include/linux/bpf_verifier.h | 1 + kernel/bpf/verifier.c | 78 ++++++++++++++++++++-- tools/testing/selftests/bpf/progs/bpf_misc.h | 4 ++ tools/testing/selftests/bpf/progs/verifier_and.c | 8 ++- .../testing/selftests/bpf/progs/verifier_bounds.c | 61 +++++++++++++---- tools/testing/selftests/bpf/progs/verifier_movsx.c | 16 ++++- .../testing/selftests/bpf/progs/verifier_unpriv.c | 8 ++- .../selftests/bpf/progs/verifier_value_ptr_arith.c | 16 +++-- tools/testing/selftests/bpf/verifier/dead_code.c | 3 +- tools/testing/selftests/bpf/verifier/jmp32.c | 33 +++------ tools/testing/selftests/bpf/verifier/jset.c | 10 ++- 11 files changed, 184 insertions(+), 54 deletions(-) accumulated error probability: 0.00 culprit signature: 8af5e9034cecf73258226dda0383887af00d7247a7b0f594696f1feb740c5144 parent signature: 27ac682bf2e9b81bdb3764e06e9d2ba5ab1eca1ee5569f31dcf080aec127e861 revisions tested: 21, total time: 6h23m22.74007396s (build: 3h31m2.550570358s, test: 2h21m17.27600553s) first bad commit: d6f1c85f22534d2d9fea9b32645da19c91ebe7d2 bpf: Fall back to nospec for Spectre v1 recipients (to): ["ast@kernel.org" "henriette.herzog@rub.de" "luis.gerhorst@fau.de" "memxor@gmail.com"] recipients (cc): [] crash: WARNING in do_check_common ------------[ cut here ]------------ WARNING: CPU: 1 PID: 3900 at kernel/bpf/verifier.c:19783 do_check kernel/bpf/verifier.c:19783 [inline] WARNING: CPU: 1 PID: 3900 at kernel/bpf/verifier.c:19783 do_check_common+0x158a/0x2d10 kernel/bpf/verifier.c:22905 Modules linked in: CPU: 1 UID: 0 PID: 3900 Comm: syz.2.17 Not tainted syzkaller #0 PREEMPT(undef) Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 08/18/2025 RIP: 0010:do_check kernel/bpf/verifier.c:19783 [inline] RIP: 0010:do_check_common+0x158a/0x2d10 kernel/bpf/verifier.c:22905 Code: ff 8b 44 24 2c 48 8d 04 80 48 c1 e0 04 49 03 86 70 06 00 00 80 78 39 00 74 37 8b 44 24 2c 83 c5 01 39 c5 0f 84 81 f3 ff ff 90 <0f> 0b 90 e9 78 f3 ff ff 45 85 e4 0f 88 e4 f1 ff ff 41 83 fc 01 0f RSP: 0018:ffffc90007893ac0 EFLAGS: 00010202 RAX: 000000000000000b RBX: 000000000000000c RCX: 0000000000002000 RDX: 0000000000000000 RSI: ffff88811bac8000 RDI: ffff88811bac8000 RBP: 000000000000000d R08: ffff88811ce71f80 R09: 0000000000000000 R10: ffffc90001079060 R11: 0202020202020202 R12: 0000000000000000 R13: ffffc90001079000 R14: ffff88811cd00000 R15: ffffc900010790a8 FS: 00007f61a5f6f6c0(0000) GS:ffff8882b3991000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000200000003000 CR3: 0000000115f18000 CR4: 00000000003526f0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: do_check_main kernel/bpf/verifier.c:22996 [inline] bpf_check+0x222d/0x2e20 kernel/bpf/verifier.c:24162 bpf_prog_load+0x6f4/0xc50 kernel/bpf/syscall.c:2972 __sys_bpf+0x22bc/0x2300 kernel/bpf/syscall.c:5978 __do_sys_bpf kernel/bpf/syscall.c:6085 [inline] __se_sys_bpf kernel/bpf/syscall.c:6083 [inline] __x64_sys_bpf+0x19/0x30 kernel/bpf/syscall.c:6083 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline] do_syscall_64+0xb6/0x3e0 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7f61a60feba9 Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007f61a5f6f038 EFLAGS: 00000246 ORIG_RAX: 0000000000000141 RAX: ffffffffffffffda RBX: 00007f61a6345fa0 RCX: 00007f61a60feba9 RDX: 0000000000000048 RSI: 00002000000017c0 RDI: 0000000000000005 RBP: 00007f61a6181e19 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000 R13: 00007f61a6346038 R14: 00007f61a6345fa0 R15: 00007ffc951d9258