Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CONFIG_UBSAN_DIV_ZERO causes objtool: foo() falls through to the next function bar() #1657

Open
nickdesaulniers opened this issue Jun 29, 2022 · 7 comments
Labels
[ARCH] x86_64 This bug impacts ARCH=x86_64 [CONFIG] allmodconfig Issue affects allmodconfig on certain architectures Reported upstream This bug was filed on LLVM’s issue tracker, Phabricator, or the kernel mailing list. [TOOL] objtool warning is produced by the kernel's objtool [WORKAROUND] Applied This bug has an applied workaround

Comments

@nickdesaulniers
Copy link
Member

From this thread:
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>

drivers/video/fbdev/smscufx.o: warning: objtool: ufx_ops_write() falls through to next function ufx_ops_setcolreg()
drivers/video/fbdev/udlfb.o: warning: objtool: dlfb_ops_write() falls through to next function dlfb_ops_setcolreg()
drivers/soc/qcom/qcom_rpmh.o: warning: objtool: rpmh_rsc_write_ctrl_data() falls through to next function trace_raw_output_rpmh_tx_done()
drivers/scsi/mpi3mr/mpi3mr.o: warning: objtool: mpi3mr_op_request_post() falls through to next function mpi3mr_check_rh_fault_ioc()
drivers/gpu/drm/radeon/radeon.o: warning: objtool: sumo_dpm_set_power_state() falls through to next function sumo_dpm_post_set_power_state()
drivers/net/ethernet/wiznet/w5100.o: warning: objtool: w5100_tx_skb() falls through to next function w5100_get_drvinfo()
drivers/net/ethernet/wiznet/w5100.o: warning: objtool: w5100_rx_skb() falls through to next function w5100_mmio_probe()

It seems like a bunch of these have something to do with __ubsan_handle_divrem_overflow. It's not clear to me yet that clang expects that fn to be noreturn (I haven't found anything in the IR or clang sources that assumes so), as hypothesized here.

@nickdesaulniers nickdesaulniers added [ARCH] x86_64 This bug impacts ARCH=x86_64 [TOOL] objtool warning is produced by the kernel's objtool [CONFIG] allmodconfig Issue affects allmodconfig on certain architectures labels Jun 29, 2022
@nickdesaulniers
Copy link
Member Author

Reported upstream

@nickdesaulniers nickdesaulniers added the Reported upstream This bug was filed on LLVM’s issue tracker, Phabricator, or the kernel mailing list. label Jun 29, 2022
@nathanchance
Copy link
Member

These appear to only be visible with clang-14 and newer.

With clang-13: https://github.com/ClangBuiltLinux/continuous-integration2/runs/7097931900?check_suite_focus=true
With clang-14: https://github.com/ClangBuiltLinux/continuous-integration2/runs/7116482760?check_suite_focus=true

-Xclang -no-enable-noundef-analysis (#1480) makes most of them go away but that might not be the root cause.

@nathanchance
Copy link
Member

There are a lot more warnings of this nature after llvm/llvm-project@10c531c.

At the parent commit:

arch/x86/kvm/kvm.o: warning: objtool: emulator_cmpxchg_emulated+0x6c8: call to __ubsan_handle_load_invalid_value() with UACCESS enabled
arch/x86/kvm/kvm.o: warning: objtool: paging64_update_accessed_dirty_bits+0x366: call to __ubsan_handle_load_invalid_value() with UACCESS enabled
arch/x86/kvm/kvm.o: warning: objtool: paging32_update_accessed_dirty_bits+0x355: call to __ubsan_handle_load_invalid_value() with UACCESS enabled
arch/x86/kvm/kvm.o: warning: objtool: ept_update_accessed_dirty_bits+0x3e8: call to __ubsan_handle_load_invalid_value() with UACCESS enabled
drivers/video/fbdev/udlfb.o: warning: objtool: dlfb_ops_write() falls through to next function dlfb_ops_setcolreg()
drivers/soc/qcom/qcom_rpmh.o: warning: objtool: rpmh_rsc_write_ctrl_data() falls through to next function trace_raw_output_rpmh_tx_done()
drivers/video/fbdev/smscufx.o: warning: objtool: ufx_ops_write() falls through to next function ufx_ops_setcolreg()
drivers/scsi/mpi3mr/mpi3mr.o: warning: objtool: mpi3mr_op_request_post() falls through to next function mpi3mr_check_rh_fault_ioc()
drivers/gpu/drm/savage/savage.o: warning: objtool: savage_dispatch_draw() falls through to next function savage_dispatch_state()
drivers/gpu/drm/radeon/radeon.o: warning: objtool: sumo_dpm_set_power_state() falls through to next function sumo_dpm_post_set_power_state()
vmlinux.o: warning: objtool: __startup_64() falls through to next function startup_64_setup_env()
vmlinux.o: warning: objtool: sync_regs+0x24: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: vc_switch_off_ist+0xbe: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: fixup_bad_iret+0x36: call to memset() leaves .noinstr.text section
vmlinux.o: warning: objtool: __sev_get_ghcb+0xa7: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: __sev_put_ghcb+0x35: call to memcpy() leaves .noinstr.text section

At that change:

arch/x86/kvm/kvm.o: warning: objtool: emulator_cmpxchg_emulated+0x6c8: call to __ubsan_handle_load_invalid_value() with UACCESS enabled
arch/x86/kvm/kvm.o: warning: objtool: paging64_update_accessed_dirty_bits+0x366: call to __ubsan_handle_load_invalid_value() with UACCESS enabled
arch/x86/kvm/kvm.o: warning: objtool: paging32_update_accessed_dirty_bits+0x355: call to __ubsan_handle_load_invalid_value() with UACCESS enabled
arch/x86/kvm/kvm.o: warning: objtool: ept_update_accessed_dirty_bits+0x3e8: call to __ubsan_handle_load_invalid_value() with UACCESS enabled
drivers/video/fbdev/core/cfbimgblt.o: warning: objtool: .text: unexpected end of section
drivers/video/fbdev/core/sysimgblt.o: warning: objtool: .text: unexpected end of section
drivers/video/fbdev/core/fb.o: warning: objtool: updatescrollmode() falls through to next function fbcon_set_palette()
drivers/video/fbdev/aty/atyfb.o: warning: objtool: aty_var_to_crtc() falls through to next function aty_enable_irq()
drivers/soc/qcom/qcom_rpmh.o: warning: objtool: rpmh_rsc_write_ctrl_data() falls through to next function trace_raw_output_rpmh_tx_done()
drivers/gpu/drm/arm/display/komeda/komeda.o: warning: objtool: komeda_fb_check_src_coords() falls through to next function komeda_fb_get_pixel_addr()
drivers/gpu/drm/bridge/analogix/anx7625.o: warning: objtool: anx7625_dp_start() falls through to next function anx7625_connector_atomic_check()
drivers/dma/dma-jz4780.o: warning: objtool: jz4780_dma_prep_dma_cyclic() falls through to next function jz4780_dma_prep_dma_memcpy()
drivers/video/fbdev/udlfb.o: warning: objtool: dlfb_ops_write() falls through to next function dlfb_ops_setcolreg()
drivers/video/fbdev/smscufx.o: warning: objtool: ufx_ops_write() falls through to next function ufx_ops_setcolreg()
drivers/tty/mxser.o: warning: objtool: mxser_change_speed() falls through to next function mxser_check_modem_status()
drivers/usb/host/isp1362-hcd.o: warning: objtool: prepare_ptd() falls through to next function claim_ptd_buffers()
drivers/media/i2c/m5mols/m5mols.o: warning: objtool: m5mols_set_fmt() falls through to next function m5mols_open()
drivers/clk/qcom/a53-pll.o: warning: objtool: .text: unexpected end of section
drivers/gpu/drm/savage/savage.o: warning: objtool: savage_dispatch_draw() falls through to next function savage_dispatch_state()
drivers/media/test-drivers/vicodec/vicodec.o: warning: objtool: device_run() falls through to next function get_next_header()
drivers/media/tuners/r820t.o: warning: objtool: r820t_set_pll() falls through to next function r820t_vga_adjust()
drivers/spi/spi-geni-qcom.o: warning: objtool: spi_geni_prepare_message() falls through to next function spi_geni_transfer_one()
drivers/spi/spi-geni-qcom.o: warning: objtool: spi_geni_transfer_one() falls through to next function geni_can_dma()
drivers/clk/qcom/clk-qcom.o: warning: objtool: clk_alpha_pll_round_rate() falls through to next function clk_alpha_pll_set_rate()
drivers/clk/qcom/clk-qcom.o: warning: objtool: alpha_pll_huayra_round_rate() falls through to next function alpha_pll_huayra_set_rate()
drivers/clk/qcom/clk-qcom.o: warning: objtool: alpha_pll_fabia_prepare() falls through to next function alpha_pll_fabia_disable()
drivers/clk/qcom/clk-qcom.o: warning: objtool: alpha_pll_fabia_set_rate() falls through to next function alpha_pll_fabia_recalc_rate()
drivers/clk/qcom/clk-qcom.o: warning: objtool: clk_alpha_pll_agera_set_rate() falls through to next function alpha_pll_lucid_5lpe_prepare()
drivers/clk/qcom/clk-qcom.o: warning: objtool: __clk_alpha_pll_set_rate() falls through to next function __clk_alpha_pll_update_latch()
drivers/usb/dwc2/dwc2.o: warning: objtool: dwc2_hsotg_start_req() falls through to next function dwc2_gadget_config_nonisoc_xfer_ddma()
drivers/media/platform/qcom/camss/qcom-camss.o: warning: objtool: vfe_set_scale_cfg() falls through to next function vfe_wm_set_ub_cfg()
drivers/media/platform/qcom/camss/qcom-camss.o: warning: objtool: vfe_set_scale_cfg() falls through to next function vfe_wm_set_ub_cfg()
drivers/media/platform/qcom/camss/qcom-camss.o: warning: objtool: vfe_set_scale_cfg() falls through to next function vfe_wm_set_ub_cfg()
drivers/clk/clk-cdce925.o: warning: objtool: cdce925_clk_round_rate() falls through to next function cdce925_clk_set_rate()
drivers/media/platform/qcom/venus/venus-enc.o: warning: objtool: .text: unexpected end of section
drivers/scsi/mpi3mr/mpi3mr.o: warning: objtool: mpi3mr_op_request_post() falls through to next function mpi3mr_check_rh_fault_ioc()
drivers/gpu/drm/radeon/radeon.o: warning: objtool: sumo_dpm_set_power_state() falls through to next function sumo_dpm_post_set_power_state()
drivers/gpu/drm/gma500/gma500_gfx.o: warning: objtool: psb_mmu_insert_pages() falls through to next function psb_mmu_virtual_to_pfn()
drivers/crypto/hisilicon/hisi_qm.o: warning: objtool: current_qm_write() falls through to next function current_q_write()
drivers/staging/media/ipu3/ipu3-imgu.o: warning: objtool: imgu_css_cfg_acc() falls through to next function imgu_css_grid_end_calc()
drivers/staging/media/ipu3/ipu3-imgu.o: warning: objtool: imgu_css_scaler_setup_lut() falls through to next function imgu_css_acc_process_lines()
drivers/mmc/host/toshsd.o: warning: objtool: __toshsd_set_ios() falls through to next function toshsd_cmd_irq()
drivers/net/ethernet/renesas/ravb.o: warning: objtool: ravb_tx_free() falls through to next function ravb_rx_ring_free_gbeth()
drivers/net/ethernet/mellanox/mlx4/mlx4_core.o: warning: objtool: mlx4_get_slave_num_gids() falls through to next function mlx4_get_base_gid_ix()
drivers/net/ethernet/mellanox/mlx4/mlx4_core.o: warning: objtool: mlx4_get_base_gid_ix() falls through to next function mlx4_reset_roce_gids()
drivers/net/ethernet/mellanox/mlx4/mlx4_core.o: warning: objtool: mlx4_get_slave_from_roce_gid() falls through to next function mlx4_get_roce_gid_from_slave()
drivers/infiniband/hw/irdma/irdma.o: warning: objtool: irdma_sc_cqp_get_next_send_wqe_idx() falls through to next function irdma_sc_cqp_destroy()
drivers/infiniband/hw/irdma/irdma.o: warning: objtool: irdma_qp_get_next_recv_wqe() falls through to next function irdma_uk_rdma_write()
drivers/mtd/nand/raw/nand.o: warning: objtool: nand_ecc_choose_conf() falls through to next function nand_maximize_ecc()
drivers/mtd/nand/raw/nand.o: warning: objtool: nand_maximize_ecc() falls through to next function nand_scan_with_ids()
drivers/iio/afe/iio-rescale.o: warning: objtool: rescale_process_scale() falls through to next function rescale_process_offset()
drivers/net/ethernet/netronome/nfp/nfp.o: warning: objtool: nfp_devlink_port_split() falls through to next function nfp_devlink_port_unsplit()
drivers/net/ethernet/netronome/nfp/nfp.o: warning: objtool: nfp_net_set_ringparam() falls through to next function nfp_net_get_strings()
drivers/net/ethernet/wiznet/w5100.o: warning: objtool: w5100_tx_skb() falls through to next function w5100_get_drvinfo()
drivers/net/ethernet/wiznet/w5100.o: warning: objtool: w5100_rx_skb() falls through to next function w5100_mmio_probe()
drivers/infiniband/hw/qib/ib_qib.o: warning: objtool: write_7322_initregs() falls through to next function set_vl_weights()
drivers/ntb/ntb_transport.o: warning: objtool: ntb_transport_probe() falls through to next function ntb_transport_link_cleanup()
drivers/gpu/drm/i915/i915.o: warning: objtool: intel_plane_check_src_coordinates() falls through to next function vlv_plane_min_cdclk()
drivers/gpu/drm/i915/i915.o: warning: objtool: gen7_oa_read() falls through to next function gen7_oa_hw_tail_read()
drivers/gpu/drm/i915/i915.o: warning: objtool: gen8_oa_read() falls through to next function gen8_is_valid_mux_addr()
sound/soc/codecs/snd-soc-adau-utils.o: warning: objtool: .text: unexpected end of section
sound/soc/codecs/snd-soc-cs35l35.o: warning: objtool: cs35l35_hw_params() falls through to next function params_width()
drivers/gpu/drm/nouveau/nouveau.o: warning: objtool: nv04_pll_calc() falls through to next function gt215_pll_calc()
vmlinux.o: warning: objtool: drbg_ctr_update() falls through to next function drbg_init_sym_kernel()
vmlinux.o: warning: objtool: get_mc_addr_translation_ranges() falls through to next function fsl_mc_bus_notifier()
vmlinux.o: warning: objtool: cpg_z_clk_determine_rate() falls through to next function cpg_z_clk_set_rate()
vmlinux.o: warning: objtool: _opp_add_static_v2() falls through to next function _read_bw()
vmlinux.o: warning: objtool: of_property_count_elems_of_size() falls through to next function of_property_read_u32_index()
vmlinux.o: warning: objtool: of_fwnode_property_read_int_array() falls through to next function of_fwnode_property_read_string_array()
vmlinux.o: warning: objtool: __startup_64() falls through to next function startup_64_setup_env()
vmlinux.o: warning: objtool: sync_regs+0x24: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: vc_switch_off_ist+0xbe: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: fixup_bad_iret+0x36: call to memset() leaves .noinstr.text section
vmlinux.o: warning: objtool: __sev_get_ghcb+0xa7: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: __sev_put_ghcb+0x35: call to memcpy() leaves .noinstr.text section

I suspect this is the same problem but I'll see which specific configurations trigger this and open a new issue if necessary.

@nickdesaulniers
Copy link
Member Author

but I'll see which specific configurations trigger this and open a new issue if necessary.

Yeah let's bisect the configs. Unless there's a bug in the LLVM patch, I have a sinking feeling that this is again sanitizer related.

@nathanchance
Copy link
Member

This appears to be entirely related to CONFIG_UBSAN_DIV_ZERO.

With ARCH=x86_64 allmodconfig + CONFIG_UBSAN_DIV_ZERO=n...

before the change:

arch/x86/kvm/kvm.o: warning: objtool: emulator_cmpxchg_emulated+0x6c8: call to __ubsan_handle_load_invalid_value() with UACCESS enabled
arch/x86/kvm/kvm.o: warning: objtool: paging64_update_accessed_dirty_bits+0x366: call to __ubsan_handle_load_invalid_value() with UACCESS enabled
arch/x86/kvm/kvm.o: warning: objtool: paging32_update_accessed_dirty_bits+0x355: call to __ubsan_handle_load_invalid_value() with UACCESS enabled
arch/x86/kvm/kvm.o: warning: objtool: ept_update_accessed_dirty_bits+0x3e8: call to __ubsan_handle_load_invalid_value() with UACCESS enabled
vmlinux.o: warning: objtool: sync_regs+0x24: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: vc_switch_off_ist+0xbe: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: fixup_bad_iret+0x36: call to memset() leaves .noinstr.text section
vmlinux.o: warning: objtool: __sev_get_ghcb+0xa7: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: __sev_put_ghcb+0x35: call to memcpy() leaves .noinstr.text section

after that change:

arch/x86/kvm/kvm.o: warning: objtool: emulator_cmpxchg_emulated+0x6c8: call to __ubsan_handle_load_invalid_value() with UACCESS enabled
arch/x86/kvm/kvm.o: warning: objtool: paging64_update_accessed_dirty_bits+0x366: call to __ubsan_handle_load_invalid_value() with UACCESS enabled
arch/x86/kvm/kvm.o: warning: objtool: paging32_update_accessed_dirty_bits+0x355: call to __ubsan_handle_load_invalid_value() with UACCESS enabled
arch/x86/kvm/kvm.o: warning: objtool: ept_update_accessed_dirty_bits+0x3e8: call to __ubsan_handle_load_invalid_value() with UACCESS enabled
drivers/media/i2c/m5mols/m5mols.o: warning: objtool: m5mols_set_fmt() falls through to next function m5mols_get_frame_desc()
vmlinux.o: warning: objtool: sync_regs+0x24: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: vc_switch_off_ist+0xbe: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: fixup_bad_iret+0x36: call to memset() leaves .noinstr.text section
vmlinux.o: warning: objtool: __sev_get_ghcb+0xa7: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: __sev_put_ghcb+0x35: call to memcpy() leaves .noinstr.text section

The drivers/media/i2c/m5mols/m5mols.o warning appears to be related to CONFIG_UBSAN_BOUNDS?

llvm-objdump output

$ llvm-objdump -dr --disassemble-symbols=m5mols_set_fmt drivers/media/i2c/m5mols/m5mols_core.o

drivers/media/i2c/m5mols/m5mols_core.o:	file format elf64-x86-64

Disassembly of section .text:

0000000000003000 <m5mols_set_fmt>:
    3000: f3 0f 1e fa                  	endbr64
		0000000000000005:  R_X86_64_PLT32	__fentry__-0x4
		000000000000002a:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000034:  R_X86_64_PLT32	__asan_store4_noabort-0x4
		000000000000004c:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000000072:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		000000000000007b:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000084:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		000000000000008e:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		000000000000009b:  R_X86_64_PLT32	__asan_store1_noabort-0x4
		00000000000000c9:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000000d7:  R_X86_64_32S	.rodata+0x60
		00000000000000df:  R_X86_64_PLT32	_printk-0x4
		00000000000000eb:  R_X86_64_PLT32	__stack_chk_fail-0x4
		0000000000000101:  R_X86_64_PLT32	__fentry__-0x4
		0000000000000135:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000141:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000000161:  R_X86_64_PLT32	memset-0x4
		0000000000000175:  R_X86_64_PLT32	memset-0x4
		0000000000000184:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		00000000000001aa:  R_X86_64_PLT32	__asan_load2_noabort-0x4
		00000000000001bd:  R_X86_64_PLT32	__asan_store2_noabort-0x4
		00000000000001d0:  R_X86_64_PLT32	__asan_store2_noabort-0x4
		00000000000001e1:  R_X86_64_PLT32	__asan_store2_noabort-0x4
		00000000000001f2:  R_X86_64_PLT32	__asan_store8_noabort-0x4
		0000000000000201:  R_X86_64_PLT32	__asan_store1_noabort-0x4
		0000000000000210:  R_X86_64_PLT32	__asan_store1_noabort-0x4
		000000000000021f:  R_X86_64_PLT32	__asan_store1_noabort-0x4
		000000000000022e:  R_X86_64_PLT32	__asan_store1_noabort-0x4
		0000000000000242:  R_X86_64_PLT32	__asan_store1_noabort-0x4
		0000000000000257:  R_X86_64_PLT32	__asan_store2_noabort-0x4
		0000000000000266:  R_X86_64_PLT32	__asan_store2_noabort-0x4
		000000000000027b:  R_X86_64_PLT32	__asan_store2_noabort-0x4
		000000000000028a:  R_X86_64_PLT32	__asan_store8_noabort-0x4
		00000000000002a8:  R_X86_64_PLT32	usleep_range_state-0x4
		00000000000002b2:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		00000000000002c6:  R_X86_64_PLT32	i2c_transfer-0x4
		00000000000002d4:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		00000000000002ec:  R_X86_64_32S	.data+0x280
		00000000000002f1:  R_X86_64_PLT32	__sanitizer_cov_trace_switch-0x4
		000000000000030e:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000316:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		0000000000000325:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000344:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		000000000000035a:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp1-0x4
		0000000000000369:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000372:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000000383:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		000000000000038b:  R_X86_64_PLT32	__asan_load2_noabort-0x4
		00000000000003a3:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000003ab:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		00000000000003b9:  R_X86_64_PLT32	__asan_store4_noabort-0x4
		00000000000003f1:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000409:  R_X86_64_32S	.rodata+0x540
		0000000000000417:  R_X86_64_PLT32	_printk-0x4
		0000000000000421:  R_X86_64_PLT32	__stack_chk_fail-0x4
		0000000000000445:  R_X86_64_PLT32	__fentry__-0x4
		000000000000046a:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000474:  R_X86_64_PLT32	__asan_store4_noabort-0x4
		000000000000048c:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		00000000000004b2:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		00000000000004bb:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000004c4:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000004ce:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		00000000000004db:  R_X86_64_PLT32	__asan_store2_noabort-0x4
		000000000000050a:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000518:  R_X86_64_32S	.rodata+0x60
		0000000000000520:  R_X86_64_PLT32	_printk-0x4
		000000000000052c:  R_X86_64_PLT32	__stack_chk_fail-0x4
		0000000000000545:  R_X86_64_PLT32	__fentry__-0x4
		0000000000000558:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000568:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000000572:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		000000000000058f:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		000000000000059d:  R_X86_64_32S	.rodata+0x60
		00000000000005a5:  R_X86_64_PLT32	_printk-0x4
		00000000000005c5:  R_X86_64_PLT32	__fentry__-0x4
		00000000000005f7:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000603:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		000000000000061e:  R_X86_64_PLT32	memset-0x4
		000000000000062a:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000000644:  R_X86_64_32S	.data+0x2a0
		0000000000000649:  R_X86_64_PLT32	__sanitizer_cov_trace_switch-0x4
		0000000000000670:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000677:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000686:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		000000000000068d:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000006a9:  R_X86_64_PLT32	__asan_load2_noabort-0x4
		00000000000006b8:  R_X86_64_PLT32	__asan_store2_noabort-0x4
		00000000000006c7:  R_X86_64_PLT32	__asan_store2_noabort-0x4
		00000000000006df:  R_X86_64_PLT32	__asan_store2_noabort-0x4
		00000000000006ee:  R_X86_64_PLT32	__asan_store8_noabort-0x4
		0000000000000706:  R_X86_64_PLT32	__asan_store1_noabort-0x4
		0000000000000715:  R_X86_64_PLT32	__asan_store1_noabort-0x4
		0000000000000724:  R_X86_64_PLT32	__asan_store1_noabort-0x4
		0000000000000733:  R_X86_64_PLT32	__asan_store1_noabort-0x4
		0000000000000742:  R_X86_64_32S	.data+0x2d0
		0000000000000747:  R_X86_64_PLT32	__sanitizer_cov_trace_switch-0x4
		0000000000000756:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000763:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000774:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000783:  R_X86_64_PLT32	__asan_store4_noabort-0x4
		000000000000079b:  R_X86_64_PLT32	usleep_range_state-0x4
		00000000000007a8:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		00000000000007ba:  R_X86_64_PLT32	i2c_transfer-0x4
		00000000000007c8:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		00000000000007d2:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000007e7:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		00000000000007fc:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp1-0x4
		0000000000000807:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000810:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		000000000000084a:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000860:  R_X86_64_32S	.rodata+0x360
		000000000000086b:  R_X86_64_PLT32	_printk-0x4
		0000000000000872:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000880:  R_X86_64_32S	.rodata+0x60
		0000000000000888:  R_X86_64_PLT32	_printk-0x4
		0000000000000894:  R_X86_64_PLT32	__stack_chk_fail-0x4
		00000000000008c5:  R_X86_64_PLT32	__fentry__-0x4
		00000000000008f5:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000008fe:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000000911:  R_X86_64_32S	jiffies
		0000000000000916:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		000000000000091d:  R_X86_64_PC32	jiffies-0x4
		0000000000000925:  R_X86_64_PLT32	__msecs_to_jiffies-0x4
		000000000000093a:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		000000000000095a:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000000975:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		000000000000098c:  R_X86_64_PLT32	__asan_store4_noabort-0x4
		00000000000009bd:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		00000000000009c7:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000009d1:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		00000000000009e6:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000009f6:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		0000000000000a0d:  R_X86_64_PLT32	__sanitizer_cov_trace_cmp4-0x4
		0000000000000a1b:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000a3a:  R_X86_64_PLT32	usleep_range_state-0x4
		0000000000000a46:  R_X86_64_32S	jiffies
		0000000000000a4b:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000000a52:  R_X86_64_PC32	jiffies-0x4
		0000000000000a5c:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000a66:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000a6d:  R_X86_64_32S	.rodata+0x60
		0000000000000a77:  R_X86_64_PLT32	_printk-0x4
		0000000000000a87:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000a94:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000aa1:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000aa8:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000ade:  R_X86_64_PLT32	__stack_chk_fail-0x4
		0000000000000b05:  R_X86_64_PLT32	__fentry__-0x4
		0000000000000b28:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000b34:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		0000000000000b5d:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000000b66:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000b7f:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000b8c:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp1-0x4
		0000000000000bb0:  R_X86_64_PLT32	m5mols_write-0x4
		0000000000000bd9:  R_X86_64_PLT32	__stack_chk_fail-0x4
		0000000000000c05:  R_X86_64_PLT32	__fentry__-0x4
		0000000000000c30:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000c38:  R_X86_64_PLT32	__msecs_to_jiffies-0x4
		0000000000000c42:  R_X86_64_32S	.rodata+0xc0
		0000000000000c4c:  R_X86_64_PLT32	__might_sleep-0x4
		0000000000000c51:  R_X86_64_PLT32	__SCT__might_resched-0x4
		0000000000000c65:  R_X86_64_PLT32	__kasan_check_write-0x4
		0000000000000c6d:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		0000000000000c80:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000000ca7:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp1-0x4
		0000000000000cb1:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000cba:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp1-0x4
		0000000000000cc4:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000cce:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000cd7:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000cde:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000ceb:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000cf2:  R_X86_64_32S	.data+0x20
		0000000000000cfa:  R_X86_64_PLT32	__ubsan_handle_load_invalid_value-0x4
		0000000000000d05:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000d0c:  R_X86_64_32S	.data
		0000000000000d14:  R_X86_64_PLT32	__ubsan_handle_load_invalid_value-0x4
		0000000000000d1b:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000d24:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000000d2e:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp8-0x4
		0000000000000d4a:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp8-0x4
		0000000000000d72:  R_X86_64_PLT32	memset-0x4
		0000000000000d7a:  R_X86_64_PLT32	__msecs_to_jiffies-0x4
		0000000000000d87:  R_X86_64_PLT32	init_wait_entry-0x4
		0000000000000daa:  R_X86_64_PLT32	prepare_to_wait_event-0x4
		0000000000000dba:  R_X86_64_PLT32	__kasan_check_write-0x4
		0000000000000dc2:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		0000000000000dd0:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000000df9:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp1-0x4
		0000000000000e03:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000e0c:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp1-0x4
		0000000000000e16:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000e20:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000e29:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000e30:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000e3d:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000e44:  R_X86_64_32S	.data+0x20
		0000000000000e4c:  R_X86_64_PLT32	__ubsan_handle_load_invalid_value-0x4
		0000000000000e57:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000e5e:  R_X86_64_32S	.data
		0000000000000e66:  R_X86_64_PLT32	__ubsan_handle_load_invalid_value-0x4
		0000000000000e6d:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000e77:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000000e81:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp8-0x4
		0000000000000ea1:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp8-0x4
		0000000000000eb5:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000ebd:  R_X86_64_PLT32	schedule_timeout-0x4
		0000000000000eca:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000ed4:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000edb:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000eea:  R_X86_64_PLT32	finish_wait-0x4
		0000000000000ef1:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000f04:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000000f19:  R_X86_64_32S	jiffies
		0000000000000f1e:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000000f2c:  R_X86_64_PC32	jiffies-0x4
		0000000000000f39:  R_X86_64_PLT32	__asan_store4_noabort-0x4
		0000000000000f61:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000000f6a:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000f74:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		0000000000000f85:  R_X86_64_PLT32	__sanitizer_cov_trace_cmp4-0x4
		0000000000000f8f:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000fa3:  R_X86_64_PLT32	usleep_range_state-0x4
		0000000000000faa:  R_X86_64_32S	jiffies
		0000000000000faf:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000000fb6:  R_X86_64_PC32	jiffies-0x4
		0000000000000fc0:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000fca:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000fd6:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000000fdf:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000000ff0:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		000000000000101f:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		000000000000102b:  R_X86_64_PLT32	__stack_chk_fail-0x4
		0000000000001045:  R_X86_64_PLT32	__fentry__-0x4
		000000000000106b:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		000000000000107d:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp1-0x4
		0000000000001088:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000010a0:  R_X86_64_PLT32	__asan_store4_noabort-0x4
		00000000000010c8:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		00000000000010d1:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000010dd:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		00000000000010f2:  R_X86_64_PLT32	__sanitizer_cov_trace_cmp1-0x4
		00000000000010fc:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001136:  R_X86_64_32S	.data+0x2f0
		000000000000113b:  R_X86_64_PLT32	__sanitizer_cov_trace_switch-0x4
		0000000000001169:  R_X86_64_PLT32	m5mols_write-0x4
		0000000000001174:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000001187:  R_X86_64_32S	jiffies
		000000000000118c:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		000000000000119a:  R_X86_64_PC32	jiffies-0x4
		00000000000011a7:  R_X86_64_PLT32	__asan_store4_noabort-0x4
		00000000000011cf:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		00000000000011dc:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		00000000000011e9:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000011f3:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		0000000000001204:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000001212:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001226:  R_X86_64_PLT32	usleep_range_state-0x4
		000000000000122d:  R_X86_64_32S	jiffies
		0000000000001232:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000001239:  R_X86_64_PC32	jiffies-0x4
		0000000000001247:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		000000000000125e:  R_X86_64_PLT32	m5mols_write-0x4
		0000000000001269:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		000000000000127c:  R_X86_64_32S	jiffies
		0000000000001281:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		000000000000128f:  R_X86_64_PC32	jiffies-0x4
		000000000000129c:  R_X86_64_PLT32	__asan_store4_noabort-0x4
		00000000000012c4:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		00000000000012d1:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		00000000000012de:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000012e8:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		00000000000012f9:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000001307:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		000000000000131b:  R_X86_64_PLT32	usleep_range_state-0x4
		0000000000001322:  R_X86_64_32S	jiffies
		0000000000001327:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		000000000000132e:  R_X86_64_PC32	jiffies-0x4
		000000000000133c:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001346:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001353:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp1-0x4
		0000000000001373:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		000000000000137c:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001386:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001392:  R_X86_64_PLT32	__asan_store1_noabort-0x4
		00000000000013a3:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000013ad:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000013b7:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000013c6:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000013d5:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000013df:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000013f1:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp1-0x4
		00000000000013fb:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		000000000000140a:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp1-0x4
		0000000000001414:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		000000000000141e:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		000000000000142c:  R_X86_64_32S	.rodata+0x440
		0000000000001433:  R_X86_64_PLT32	_printk-0x4
		000000000000143d:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001449:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001455:  R_X86_64_PLT32	__stack_chk_fail-0x4
		0000000000001481:  R_X86_64_PLT32	__fentry__-0x4
		00000000000014a6:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000014b6:  R_X86_64_PLT32	m5mols_write-0x4
		00000000000014c1:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		00000000000014d0:  R_X86_64_32S	jiffies
		00000000000014d5:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		00000000000014e3:  R_X86_64_PC32	jiffies-0x4
		00000000000014f0:  R_X86_64_PLT32	__asan_store4_noabort-0x4
		0000000000001518:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000001525:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		000000000000152e:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001538:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		0000000000001547:  R_X86_64_PLT32	__sanitizer_cov_trace_cmp4-0x4
		0000000000001551:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001565:  R_X86_64_PLT32	usleep_range_state-0x4
		000000000000156c:  R_X86_64_32S	jiffies
		0000000000001571:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000001578:  R_X86_64_PC32	jiffies-0x4
		0000000000001582:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		000000000000158c:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001593:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		000000000000159f:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000015a6:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000015d5:  R_X86_64_PLT32	__stack_chk_fail-0x4
		0000000000001605:  R_X86_64_PLT32	__fentry__-0x4
		0000000000001613:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001622:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		0000000000001638:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp1-0x4
		0000000000001647:  R_X86_64_PLT32	m5mols_do_scenemode-0x4
		0000000000001652:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		000000000000165b:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001662:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001669:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001675:  R_X86_64_PLT32	v4l2_ctrl_handler_setup-0x4
		0000000000001680:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		000000000000168d:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		00000000000016c5:  R_X86_64_PLT32	__fentry__-0x4
		00000000000016ca:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001705:  R_X86_64_PLT32	__fentry__-0x4
		000000000000171b:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		000000000000172b:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		000000000000174a:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		000000000000175a:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000001774:  R_X86_64_PLT32	devm_kmalloc-0x4
		000000000000178b:  R_X86_64_32S	.rodata+0x780
		0000000000001795:  R_X86_64_PLT32	devm_gpiod_get-0x4
		00000000000017aa:  R_X86_64_PLT32	__asan_store8_noabort-0x4
		00000000000017bf:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000017c9:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000017e2:  R_X86_64_32S	.rodata+0x7a0
		00000000000017e7:  R_X86_64_PLT32	gpiod_set_consumer_name-0x4
		00000000000017ef:  R_X86_64_PLT32	__asan_store8_noabort-0x4
		00000000000017fa:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000001810:  R_X86_64_PLT32	__asan_store8_noabort-0x4
		0000000000001826:  R_X86_64_32S	.data+0x160
		000000000000182b:  R_X86_64_PLT32	devm_regulator_bulk_get-0x4
		0000000000001837:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000001859:  R_X86_64_32S	.rodata+0x860
		000000000000185e:  R_X86_64_PLT32	v4l2_i2c_subdev_init-0x4
		0000000000001871:  R_X86_64_32S	.rodata+0x5c0
		0000000000001876:  R_X86_64_PLT32	strscpy-0x4
		0000000000001882:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		0000000000001895:  R_X86_64_PLT32	__asan_store8_noabort-0x4
		00000000000018a0:  R_X86_64_32S	.rodata+0x8c0
		00000000000018b3:  R_X86_64_PLT32	__asan_store8_noabort-0x4
		00000000000018ce:  R_X86_64_PLT32	media_entity_pads_init-0x4
		00000000000018da:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		00000000000018ec:  R_X86_64_PLT32	__asan_store4_noabort-0x4
		0000000000001901:  R_X86_64_32S	.rodata+0x920
		0000000000001908:  R_X86_64_32S	.bss+0x20
		000000000000190d:  R_X86_64_PLT32	__init_waitqueue_head-0x4
		000000000000191b:  R_X86_64_32S	.rodata+0x960
		0000000000001922:  R_X86_64_32S	.bss+0x40
		0000000000001927:  R_X86_64_PLT32	__mutex_init-0x4
		0000000000001934:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		000000000000194a:  R_X86_64_32S	.text+0x1d00
		0000000000001953:  R_X86_64_32S	.rodata+0x5c0
		000000000000195a:  R_X86_64_PLT32	devm_request_threaded_irq-0x4
		000000000000196a:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000001982:  R_X86_64_PLT32	__asan_store4_noabort-0x4
		000000000000199f:  R_X86_64_32S	.rodata+0xa60
		00000000000019a4:  R_X86_64_PLT32	memcpy-0x4
		00000000000019b7:  R_X86_64_32S	.rodata+0xa90
		00000000000019bc:  R_X86_64_PLT32	memcpy-0x4
		00000000000019cb:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		00000000000019e4:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		00000000000019f7:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp1-0x4
		0000000000001a09:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000001a23:  R_X86_64_PLT32	__x86_indirect_thunk_r11-0x4
		0000000000001a2f:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000001a3d:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001a47:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001a51:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001a64:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000001a6d:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001a74:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001a7e:  R_X86_64_32S	.rodata+0x640
		0000000000001a85:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001a8f:  R_X86_64_32S	.rodata+0x740
		0000000000001a94:  R_X86_64_PLT32	_dev_err-0x4
		0000000000001aa4:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001aac:  R_X86_64_PLT32	m5mols_init_controls-0x4
		0000000000001ab4:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000001abf:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		0000000000001ad3:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp1-0x4
		0000000000001add:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001aee:  R_X86_64_32S	.data+0x160
		0000000000001af3:  R_X86_64_PLT32	regulator_bulk_disable-0x4
		0000000000001aff:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000001b09:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001b13:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001b1a:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001b26:  R_X86_64_32S	.data+0x160
		0000000000001b2b:  R_X86_64_PLT32	regulator_bulk_enable-0x4
		0000000000001b37:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000001b49:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000001b5a:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001b6b:  R_X86_64_PLT32	__x86_indirect_thunk_r11-0x4
		0000000000001b7d:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000001b8b:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001b9c:  R_X86_64_PLT32	__x86_indirect_thunk_r11-0x4
		0000000000001ba3:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001baf:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000001bb9:  R_X86_64_PLT32	gpiod_set_value-0x4
		0000000000001bc1:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		0000000000001bd0:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001bda:  R_X86_64_32S	.rodata+0x820
		0000000000001be1:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001be8:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001bf2:  R_X86_64_32S	.rodata+0x9e0
		0000000000001bfa:  R_X86_64_PLT32	_dev_err-0x4
		0000000000001c01:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001c0d:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000001c1a:  R_X86_64_PLT32	gpiod_set_value-0x4
		0000000000001c22:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		0000000000001c85:  R_X86_64_PLT32	__fentry__-0x4
		0000000000001c8e:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001c9a:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000001ca9:  R_X86_64_PLT32	v4l2_device_unregister_subdev-0x4
		0000000000001cb5:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000001cc1:  R_X86_64_PLT32	v4l2_ctrl_handler_free-0x4
		0000000000001d05:  R_X86_64_PLT32	__fentry__-0x4
		0000000000001d10:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001d24:  R_X86_64_PLT32	__kasan_check_write-0x4
		0000000000001d2c:  R_X86_64_PLT32	__asan_store4_noabort-0x4
		0000000000001d51:  R_X86_64_PLT32	__wake_up-0x4
		0000000000001d85:  R_X86_64_PLT32	__fentry__-0x4
		0000000000001d99:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001da5:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000001dbb:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		0000000000001dd3:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp1-0x4
		0000000000001ddd:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001df6:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000001e10:  R_X86_64_PLT32	__x86_indirect_thunk_r11-0x4
		0000000000001e1c:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000001e26:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001e37:  R_X86_64_32S	.data+0x160
		0000000000001e3c:  R_X86_64_PLT32	regulator_bulk_disable-0x4
		0000000000001e48:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000001e52:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001e5c:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001e6a:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000001e7f:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001e90:  R_X86_64_PLT32	__x86_indirect_thunk_r11-0x4
		0000000000001e9a:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001ea6:  R_X86_64_32S	.data+0x160
		0000000000001eab:  R_X86_64_PLT32	regulator_bulk_enable-0x4
		0000000000001eb7:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000001ec4:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000001ed5:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001ee6:  R_X86_64_PLT32	__x86_indirect_thunk_r11-0x4
		0000000000001eed:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001ef9:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000001f07:  R_X86_64_PLT32	gpiod_set_value-0x4
		0000000000001f0f:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		0000000000001f1e:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001f2a:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000001f3b:  R_X86_64_PLT32	gpiod_set_value-0x4
		0000000000001f43:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		0000000000001f55:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001f81:  R_X86_64_PLT32	__fentry__-0x4
		0000000000001fa5:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000001fb9:  R_X86_64_PLT32	__kasan_check_write-0x4
		0000000000001fc1:  R_X86_64_PLT32	__asan_store4_noabort-0x4
		0000000000001fd3:  R_X86_64_32S	jiffies
		0000000000001fd8:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000001fe6:  R_X86_64_PC32	jiffies-0x4
		0000000000001ff3:  R_X86_64_PLT32	__asan_store4_noabort-0x4
		000000000000201b:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000002024:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		000000000000202e:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		000000000000203c:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000002045:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002059:  R_X86_64_PLT32	usleep_range_state-0x4
		0000000000002060:  R_X86_64_32S	jiffies
		0000000000002065:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		000000000000206c:  R_X86_64_PC32	jiffies-0x4
		0000000000002076:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002080:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000020c5:  R_X86_64_PLT32	m5mols_write-0x4
		00000000000020d0:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		00000000000020d9:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000020e0:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000020f2:  R_X86_64_PLT32	m5mols_wait_interrupt-0x4
		00000000000020fd:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		000000000000210d:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		0000000000002122:  R_X86_64_PLT32	__asan_store4_noabort-0x4
		000000000000214a:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000002153:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		000000000000215d:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002173:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		000000000000217f:  R_X86_64_PLT32	__asan_store1_noabort-0x4
		0000000000002193:  R_X86_64_PLT32	__asan_store4_noabort-0x4
		00000000000021bb:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		00000000000021c4:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000021da:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		00000000000021e6:  R_X86_64_PLT32	__asan_store1_noabort-0x4
		00000000000021fa:  R_X86_64_PLT32	__asan_store4_noabort-0x4
		0000000000002222:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		000000000000222b:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002241:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		000000000000224e:  R_X86_64_PLT32	__asan_store2_noabort-0x4
		0000000000002263:  R_X86_64_PLT32	__asan_store4_noabort-0x4
		000000000000228b:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000002294:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000022aa:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		00000000000022b7:  R_X86_64_PLT32	__asan_store2_noabort-0x4
		00000000000022cc:  R_X86_64_PLT32	__asan_store4_noabort-0x4
		00000000000022f4:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		00000000000022fd:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002313:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		0000000000002320:  R_X86_64_PLT32	__asan_store2_noabort-0x4
		0000000000002335:  R_X86_64_PLT32	__asan_store4_noabort-0x4
		000000000000235d:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000002366:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		000000000000237c:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		0000000000002389:  R_X86_64_PLT32	__asan_store2_noabort-0x4
		000000000000239e:  R_X86_64_PLT32	__asan_store4_noabort-0x4
		00000000000023c6:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		00000000000023cf:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000023f9:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		0000000000002409:  R_X86_64_PLT32	__asan_store1_noabort-0x4
		000000000000241e:  R_X86_64_PLT32	__asan_store4_noabort-0x4
		0000000000002446:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000002459:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		0000000000002467:  R_X86_64_PLT32	__asan_store1_noabort-0x4
		000000000000247a:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002487:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		000000000000249d:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		00000000000024af:  R_X86_64_32S	.data+0x320
		00000000000024b4:  R_X86_64_PLT32	__sanitizer_cov_trace_switch-0x4
		00000000000024cc:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000024d8:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		00000000000024ec:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp1-0x4
		00000000000024f6:  R_X86_64_32S	.rodata+0x1300
		00000000000024fd:  R_X86_64_32S	.rodata+0x1320
		0000000000002512:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		0000000000002526:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp1-0x4
		0000000000002530:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002537:  R_X86_64_32S	.rodata+0x12c0
		0000000000002545:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		0000000000002559:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp1-0x4
		0000000000002563:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		000000000000256a:  R_X86_64_32S	.rodata+0x1280
		0000000000002571:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002578:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		000000000000257f:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002586:  R_X86_64_32S	.rodata+0x1320
		000000000000258d:  R_X86_64_32S	.rodata+0x1200
		0000000000002595:  R_X86_64_PLT32	_printk-0x4
		000000000000259d:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		00000000000025ae:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		00000000000025b9:  R_X86_64_32S	.rodata+0x13a0
		00000000000025c3:  R_X86_64_PLT32	_printk-0x4
		00000000000025cf:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		00000000000025db:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp1-0x4
		00000000000025e8:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000025f2:  R_X86_64_32S	.text+0x1d80
		00000000000025f7:  R_X86_64_PLT32	m5mols_update_fw-0x4
		0000000000002602:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		000000000000260b:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002616:  R_X86_64_PC32	m5mols_debug-0x4
		000000000000261f:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		000000000000262c:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		000000000000263e:  R_X86_64_PLT32	m5mols_write-0x4
		0000000000002649:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000002652:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002660:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		0000000000002689:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000002692:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		000000000000269c:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000026a3:  R_X86_64_32S	.rodata+0x1460
		00000000000026ab:  R_X86_64_PLT32	_printk-0x4
		00000000000026b5:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000026c1:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp1-0x4
		00000000000026db:  R_X86_64_PLT32	m5mols_write-0x4
		00000000000026f4:  R_X86_64_PLT32	__stack_chk_fail-0x4
		00000000000026f9:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002700:  R_X86_64_32S	.rodata+0x1140
		0000000000002708:  R_X86_64_PLT32	_printk-0x4
		0000000000002745:  R_X86_64_PLT32	__fentry__-0x4
		000000000000274e:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002764:  R_X86_64_PLT32	v4l2_ctrl_handler_log_status-0x4
		0000000000002785:  R_X86_64_PLT32	__fentry__-0x4
		00000000000027ab:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000027bc:  R_X86_64_PLT32	mutex_lock_nested-0x4
		00000000000027c5:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		00000000000027d9:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		00000000000027ef:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		0000000000002803:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp1-0x4
		000000000000281f:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		000000000000283d:  R_X86_64_PLT32	__x86_indirect_thunk_r11-0x4
		0000000000002848:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000002855:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		000000000000286a:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		000000000000287e:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp1-0x4
		000000000000288f:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		00000000000028a3:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp1-0x4
		00000000000028b6:  R_X86_64_PLT32	m5mols_set_mode-0x4
		00000000000028c1:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		00000000000028ce:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000028d8:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000028ec:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000028f6:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000028fd:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002907:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002913:  R_X86_64_32S	.data+0x160
		0000000000002918:  R_X86_64_PLT32	regulator_bulk_enable-0x4
		0000000000002923:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		000000000000292f:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		000000000000293d:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		000000000000294e:  R_X86_64_PLT32	__x86_indirect_thunk_r11-0x4
		000000000000295c:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002968:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000002976:  R_X86_64_PLT32	gpiod_set_value-0x4
		000000000000297e:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		0000000000002994:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000029ac:  R_X86_64_PLT32	m5mols_write-0x4
		00000000000029b7:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		00000000000029c0:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000029d4:  R_X86_64_PLT32	m5mols_write-0x4
		00000000000029df:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		00000000000029ec:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		00000000000029f5:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000002a02:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002a0e:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000002a24:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		0000000000002a3a:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp1-0x4
		0000000000002a44:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002a55:  R_X86_64_32S	.data+0x160
		0000000000002a5a:  R_X86_64_PLT32	regulator_bulk_disable-0x4
		0000000000002a65:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000002a6e:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002a7c:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000002a8d:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002a9e:  R_X86_64_PLT32	__x86_indirect_thunk_r11-0x4
		0000000000002aa5:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002ab1:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000002ac2:  R_X86_64_PLT32	gpiod_set_value-0x4
		0000000000002aca:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		0000000000002adc:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		0000000000002ae8:  R_X86_64_PLT32	mutex_unlock-0x4
		0000000000002b1e:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002b2c:  R_X86_64_32S	.rodata+0xe00
		0000000000002b31:  R_X86_64_PLT32	_printk-0x4
		0000000000002b3d:  R_X86_64_32S	jiffies
		0000000000002b42:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000002b50:  R_X86_64_PC32	jiffies-0x4
		0000000000002b5d:  R_X86_64_PLT32	__asan_store4_noabort-0x4
		0000000000002b85:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000002b92:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000002b9b:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002ba5:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		0000000000002bb6:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000002bc0:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002bd4:  R_X86_64_PLT32	usleep_range_state-0x4
		0000000000002bdb:  R_X86_64_32S	jiffies
		0000000000002be0:  R_X86_64_PLT32	__asan_load8_noabort-0x4
		0000000000002be7:  R_X86_64_PC32	jiffies-0x4
		0000000000002bf1:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002bfb:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002c05:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002c0f:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002c19:  R_X86_64_PLT32	__stack_chk_fail-0x4
		0000000000002c45:  R_X86_64_PLT32	__fentry__-0x4
		0000000000002c59:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002c6a:  R_X86_64_PLT32	mutex_lock_nested-0x4
		0000000000002c76:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		0000000000002c89:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000002c98:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002ca5:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000002cc1:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		0000000000002cd3:  R_X86_64_32S	.data+0x350
		0000000000002cd8:  R_X86_64_PLT32	__sanitizer_cov_trace_switch-0x4
		0000000000002cee:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002cf6:  R_X86_64_PLT32	m5mols_start_capture-0x4
		0000000000002cfd:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002d0a:  R_X86_64_PLT32	m5mols_set_mode-0x4
		0000000000002d1b:  R_X86_64_PLT32	m5mols_set_mode-0x4
		0000000000002d26:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000002d2f:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002d36:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002d43:  R_X86_64_PLT32	mutex_unlock-0x4
		0000000000002d63:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		0000000000002d78:  R_X86_64_PLT32	m5mols_write-0x4
		0000000000002d83:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000002d8c:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002da0:  R_X86_64_PLT32	m5mols_write-0x4
		0000000000002dab:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000002db4:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002dc3:  R_X86_64_PLT32	m5mols_set_mode-0x4
		0000000000002dce:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000002dd7:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002deb:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		0000000000002e01:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp1-0x4
		0000000000002e10:  R_X86_64_PLT32	m5mols_do_scenemode-0x4
		0000000000002e1b:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000002e24:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002e2e:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002e38:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002e44:  R_X86_64_PLT32	v4l2_ctrl_handler_setup-0x4
		0000000000002e4f:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000002e5c:  R_X86_64_PLT32	__asan_load1_noabort-0x4
		0000000000002e7b:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002e84:  R_X86_64_32S	.data+0x220
		0000000000002e89:  R_X86_64_PLT32	__ubsan_handle_out_of_bounds-0x4
		0000000000002ec5:  R_X86_64_PLT32	__fentry__-0x4
		0000000000002edd:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002ee6:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
		0000000000002efc:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
		0000000000002f0c:  R_X86_64_PLT32	__asan_store4_noabort-0x4
		0000000000002f1d:  R_X86_64_PLT32	__asan_store2_noabort-0x4
		0000000000002f31:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		0000000000002f3d:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		0000000000002f50:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		0000000000002f79:  R_X86_64_PLT32	__asan_store4_noabort-0x4
		0000000000002f90:  R_X86_64_PLT32	mutex_lock_nested-0x4
		0000000000002f98:  R_X86_64_PLT32	__asan_load4_noabort-0x4
		0000000000002fa8:  R_X86_64_PLT32	__asan_store4_noabort-0x4
		0000000000002fb7:  R_X86_64_PLT32	mutex_unlock-0x4
		0000000000002fbe:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
    3004: e8 00 00 00 00               	callq	0x3009 <m5mols_set_fmt+0x9>
		0000000000003005:  R_X86_64_PLT32	__fentry__-0x4
    3009: 55                           	pushq	%rbp
    300a: 41 57                        	pushq	%r15
    300c: 41 56                        	pushq	%r14
    300e: 41 55                        	pushq	%r13
    3010: 41 54                        	pushq	%r12
    3012: 53                           	pushq	%rbx
    3013: 48 83 ec 48                  	subq	$72, %rsp
    3017: 48 89 d5                     	movq	%rdx, %rbp
    301a: 49 89 f4                     	movq	%rsi, %r12
    301d: 49 89 fe                     	movq	%rdi, %r14
    3020: e8 00 00 00 00               	callq	0x3025 <m5mols_set_fmt+0x25>
		0000000000003021:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
    3025: 4c 8d 7d 10                  	leaq	16(%rbp), %r15
    3029: 4c 89 ff                     	movq	%r15, %rdi
    302c: e8 00 00 00 00               	callq	0x3031 <m5mols_set_fmt+0x31>
		000000000000302d:  R_X86_64_PLT32	__asan_load4_noabort-0x4
    3031: 8b 5d 10                     	movl	16(%rbp), %ebx
    3034: 48 89 df                     	movq	%rbx, %rdi
    3037: 48 c7 c6 00 00 00 00         	movq	$0, %rsi
		000000000000303a:  R_X86_64_32S	.data+0x370
    303e: e8 00 00 00 00               	callq	0x3043 <m5mols_set_fmt+0x43>
		000000000000303f:  R_X86_64_PLT32	__sanitizer_cov_trace_switch-0x4
    3043: 48 81 fb 01 40 00 00         	cmpq	$16385, %rbx            # imm = 0x4001
    304a: 4c 89 7c 24 38               	movq	%r15, 56(%rsp)
    304f: 4c 89 64 24 30               	movq	%r12, 48(%rsp)
    3054: 75 0d                        	jne	0x3063 <m5mols_set_fmt+0x63>
    3056: e8 00 00 00 00               	callq	0x305b <m5mols_set_fmt+0x5b>
		0000000000003057:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
    305b: 41 bd 01 00 00 00            	movl	$1, %r13d
    3061: eb 14                        	jmp	0x3077 <m5mols_set_fmt+0x77>
    3063: 81 fb 07 20 00 00            	cmpl	$8199, %ebx             # imm = 0x2007
    3069: 0f 85 0b 03 00 00            	jne	0x337a <m5mols_set_fmt+0x37a>
    306f: e8 00 00 00 00               	callq	0x3074 <m5mols_set_fmt+0x74>
		0000000000003070:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
    3074: 45 31 ed                     	xorl	%r13d, %r13d
    3077: 4c 89 74 24 18               	movq	%r14, 24(%rsp)
    307c: 49 8d 46 f8                  	leaq	-8(%r14), %rax
    3080: 48 89 44 24 40               	movq	%rax, 64(%rsp)
    3085: 48 8d 45 08                  	leaq	8(%rbp), %rax
    3089: 48 89 44 24 08               	movq	%rax, 8(%rsp)
    308e: 48 89 6c 24 20               	movq	%rbp, 32(%rsp)
    3093: 48 8d 45 0c                  	leaq	12(%rbp), %rax
    3097: 48 89 44 24 28               	movq	%rax, 40(%rsp)
    309c: bd ff ff ff ff               	movl	$4294967295, %ebp       # imm = 0xFFFFFFFF
    30a1: 49 c7 c4 00 00 00 00         	movq	$0, %r12
		00000000000030a4:  R_X86_64_32S	.rodata+0xe80
    30a8: c7 44 24 04 dc ff ff ff      	movl	$4294967260, 4(%rsp)    # imm = 0xFFFFFFDC
    30b0: 49 c7 c7 00 00 00 00         	movq	$0, %r15
		00000000000030b3:  R_X86_64_32S	.rodata+0xe8a
    30b7: 45 31 f6                     	xorl	%r14d, %r14d
    30ba: 44 89 2c 24                  	movl	%r13d, (%rsp)
    30be: 49 8d 7f fa                  	leaq	-6(%r15), %rdi
    30c2: e8 00 00 00 00               	callq	0x30c7 <m5mols_set_fmt+0xc7>
		00000000000030c3:  R_X86_64_PLT32	__asan_load4_noabort-0x4
    30c7: 41 8b 5c 24 04               	movl	4(%r12), %ebx
    30cc: 44 89 ef                     	movl	%r13d, %edi
    30cf: 89 de                        	movl	%ebx, %esi
    30d1: e8 00 00 00 00               	callq	0x30d6 <m5mols_set_fmt+0xd6>
		00000000000030d2:  R_X86_64_PLT32	__sanitizer_cov_trace_cmp4-0x4
    30d6: 41 39 dd                     	cmpl	%ebx, %r13d
    30d9: 75 7e                        	jne	0x3159 <m5mols_set_fmt+0x159>
    30db: e8 00 00 00 00               	callq	0x30e0 <m5mols_set_fmt+0xe0>
		00000000000030dc:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
    30e0: 49 8d 7f fe                  	leaq	-2(%r15), %rdi
    30e4: e8 00 00 00 00               	callq	0x30e9 <m5mols_set_fmt+0xe9>
		00000000000030e5:  R_X86_64_PLT32	__asan_load2_noabort-0x4
    30e9: 41 0f b7 5c 24 08            	movzwl	8(%r12), %ebx
    30ef: 89 6c 24 14                  	movl	%ebp, 20(%rsp)
    30f3: 48 8b 6c 24 08               	movq	8(%rsp), %rbp
    30f8: 48 89 ef                     	movq	%rbp, %rdi
    30fb: e8 00 00 00 00               	callq	0x3100 <m5mols_set_fmt+0x100>
		00000000000030fc:  R_X86_64_PLT32	__asan_load4_noabort-0x4
    3100: 2b 5d 00                     	subl	(%rbp), %ebx
    3103: 41 89 dd                     	movl	%ebx, %r13d
    3106: 41 f7 dd                     	negl	%r13d
    3109: 44 0f 48 eb                  	cmovsl	%ebx, %r13d
    310d: 4c 89 ff                     	movq	%r15, %rdi
    3110: e8 00 00 00 00               	callq	0x3115 <m5mols_set_fmt+0x115>
		0000000000003111:  R_X86_64_PLT32	__asan_load2_noabort-0x4
    3115: 4c 89 f5                     	movq	%r14, %rbp
    3118: 45 0f b7 74 24 0a            	movzwl	10(%r12), %r14d
    311e: 48 8b 5c 24 28               	movq	40(%rsp), %rbx
    3123: 48 89 df                     	movq	%rbx, %rdi
    3126: e8 00 00 00 00               	callq	0x312b <m5mols_set_fmt+0x12b>
		0000000000003127:  R_X86_64_PLT32	__asan_load4_noabort-0x4
    312b: 44 2b 33                     	subl	(%rbx), %r14d
    312e: 44 89 f3                     	movl	%r14d, %ebx
    3131: f7 db                        	negl	%ebx
    3133: 41 0f 48 de                  	cmovsl	%r14d, %ebx
    3137: 49 89 ee                     	movq	%rbp, %r14
    313a: 8b 6c 24 14                  	movl	20(%rsp), %ebp
    313e: 44 01 eb                     	addl	%r13d, %ebx
    3141: 44 8b 2c 24                  	movl	(%rsp), %r13d
    3145: 89 df                        	movl	%ebx, %edi
    3147: 89 ee                        	movl	%ebp, %esi
    3149: e8 00 00 00 00               	callq	0x314e <m5mols_set_fmt+0x14e>
		000000000000314a:  R_X86_64_PLT32	__sanitizer_cov_trace_cmp4-0x4
    314e: 39 eb                        	cmpl	%ebp, %ebx
    3150: 4d 0f 42 f4                  	cmovbq	%r12, %r14
    3154: 0f 42 eb                     	cmovbl	%ebx, %ebp
    3157: eb 05                        	jmp	0x315e <m5mols_set_fmt+0x15e>
    3159: e8 00 00 00 00               	callq	0x315e <m5mols_set_fmt+0x15e>
		000000000000315a:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
    315e: 8b 5c 24 04                  	movl	4(%rsp), %ebx
    3162: 85 db                        	testl	%ebx, %ebx
    3164: 74 18                        	je	0x317e <m5mols_set_fmt+0x17e>
    3166: 49 83 c4 0c                  	addq	$12, %r12
    316a: e8 00 00 00 00               	callq	0x316f <m5mols_set_fmt+0x16f>
		000000000000316b:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
    316f: ff c3                        	incl	%ebx
    3171: 89 5c 24 04                  	movl	%ebx, 4(%rsp)
    3175: 49 83 c7 0c                  	addq	$12, %r15
    3179: e9 40 ff ff ff               	jmp	0x30be <m5mols_set_fmt+0xbe>
    317e: 4d 85 f6                     	testq	%r14, %r14
    3181: 0f 84 5d 01 00 00            	je	0x32e4 <m5mols_set_fmt+0x2e4>
    3187: 49 8d 7e 08                  	leaq	8(%r14), %rdi
    318b: e8 00 00 00 00               	callq	0x3190 <m5mols_set_fmt+0x190>
		000000000000318c:  R_X86_64_PLT32	__asan_load2_noabort-0x4
    3190: 41 0f b7 5e 08               	movzwl	8(%r14), %ebx
    3195: 48 8b 7c 24 08               	movq	8(%rsp), %rdi
    319a: e8 00 00 00 00               	callq	0x319f <m5mols_set_fmt+0x19f>
		000000000000319b:  R_X86_64_PLT32	__asan_store4_noabort-0x4
    319f: 48 8b 6c 24 20               	movq	32(%rsp), %rbp
    31a4: 89 5d 08                     	movl	%ebx, 8(%rbp)
    31a7: 49 8d 7e 0a                  	leaq	10(%r14), %rdi
    31ab: e8 00 00 00 00               	callq	0x31b0 <m5mols_set_fmt+0x1b0>
		00000000000031ac:  R_X86_64_PLT32	__asan_load2_noabort-0x4
    31b0: 41 0f b7 5e 0a               	movzwl	10(%r14), %ebx
    31b5: 48 8b 7c 24 28               	movq	40(%rsp), %rdi
    31ba: e8 00 00 00 00               	callq	0x31bf <m5mols_set_fmt+0x1bf>
		00000000000031bb:  R_X86_64_PLT32	__asan_store4_noabort-0x4
    31bf: 89 5d 0c                     	movl	%ebx, 12(%rbp)
    31c2: 4c 89 f7                     	movq	%r14, %rdi
    31c5: e8 00 00 00 00               	callq	0x31ca <m5mols_set_fmt+0x1ca>
		00000000000031c6:  R_X86_64_PLT32	__asan_load1_noabort-0x4
    31ca: 45 8a 26                     	movb	(%r14), %r12b
    31cd: 48 89 ef                     	movq	%rbp, %rdi
    31d0: e8 00 00 00 00               	callq	0x31d5 <m5mols_set_fmt+0x1d5>
		00000000000031d1:  R_X86_64_PLT32	__asan_load4_noabort-0x4
    31d5: 8b 5d 00                     	movl	(%rbp), %ebx
    31d8: 31 ff                        	xorl	%edi, %edi
    31da: 89 de                        	movl	%ebx, %esi
    31dc: e8 00 00 00 00               	callq	0x31e1 <m5mols_set_fmt+0x1e1>
		00000000000031dd:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
    31e1: 44 89 ed                     	movl	%r13d, %ebp
    31e4: 85 db                        	testl	%ebx, %ebx
    31e6: 0f 84 04 01 00 00            	je	0x32f0 <m5mols_set_fmt+0x2f0>
    31ec: e8 00 00 00 00               	callq	0x31f1 <m5mols_set_fmt+0x1f1>
		00000000000031ed:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
    31f1: 48 8d 04 6d 00 00 00 00      	leaq	(,%rbp,2), %rax
    31f9: 48 01 e8                     	addq	%rbp, %rax
    31fc: 48 c1 e0 04                  	shlq	$4, %rax
    3200: 48 8b 4c 24 40               	movq	64(%rsp), %rcx
    3205: 4c 8d 3c 01                  	leaq	(%rcx,%rax), %r15
    3209: 49 81 c7 58 04 00 00         	addq	$1112, %r15             # imm = 0x458
    3210: 4d 85 ff                     	testq	%r15, %r15
    3213: 0f 84 21 01 00 00            	je	0x333a <m5mols_set_fmt+0x33a>
    3219: 4c 8b 6c 24 18               	movq	24(%rsp), %r13
    321e: 4d 8d b5 b0 03 00 00         	leaq	944(%r13), %r14
    3225: 4c 89 f7                     	movq	%r14, %rdi
    3228: 31 f6                        	xorl	%esi, %esi
    322a: e8 00 00 00 00               	callq	0x322f <m5mols_set_fmt+0x22f>
		000000000000322b:  R_X86_64_PLT32	mutex_lock_nested-0x4
    322f: 48 8d 1c 6d 00 00 00 00      	leaq	(,%rbp,2), %rbx
    3237: 48 01 eb                     	addq	%rbp, %rbx
    323a: 48 c1 e3 04                  	shlq	$4, %rbx
    323e: 48 8d bb 00 00 00 00         	leaq	(%rbx), %rdi
		0000000000003241:  R_X86_64_32S	.rodata+0xa68
    3245: e8 00 00 00 00               	callq	0x324a <m5mols_set_fmt+0x24a>
		0000000000003246:  R_X86_64_PLT32	__asan_load4_noabort-0x4
    324a: 8b 9b 00 00 00 00            	movl	(%rbx), %ebx
		000000000000324c:  R_X86_64_32S	.rodata+0xa68
    3250: 48 8b 7c 24 38               	movq	56(%rsp), %rdi
    3255: e8 00 00 00 00               	callq	0x325a <m5mols_set_fmt+0x25a>
		0000000000003256:  R_X86_64_PLT32	__asan_store4_noabort-0x4
    325a: 48 8b 6c 24 20               	movq	32(%rsp), %rbp
    325f: 89 5d 10                     	movl	%ebx, 16(%rbp)
    3262: 48 8d 7d 18                  	leaq	24(%rbp), %rdi
    3266: e8 00 00 00 00               	callq	0x326b <m5mols_set_fmt+0x26b>
		0000000000003267:  R_X86_64_PLT32	__asan_store4_noabort-0x4
    326b: c7 45 18 07 00 00 00         	movl	$7, 24(%rbp)
    3272: 48 8d 7d 14                  	leaq	20(%rbp), %rdi
    3276: e8 00 00 00 00               	callq	0x327b <m5mols_set_fmt+0x27b>
		0000000000003277:  R_X86_64_PLT32	__asan_store4_noabort-0x4
    327b: c7 45 14 01 00 00 00         	movl	$1, 20(%rbp)
    3282: 48 89 ef                     	movq	%rbp, %rdi
    3285: e8 00 00 00 00               	callq	0x328a <m5mols_set_fmt+0x28a>
		0000000000003286:  R_X86_64_PLT32	__asan_load4_noabort-0x4
    328a: 8b 5d 00                     	movl	(%rbp), %ebx
    328d: bf 01 00 00 00               	movl	$1, %edi
    3292: 89 de                        	movl	%ebx, %esi
    3294: e8 00 00 00 00               	callq	0x3299 <m5mols_set_fmt+0x299>
		0000000000003295:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp4-0x4
    3299: 83 fb 01                     	cmpl	$1, %ebx
    329c: 0f 85 9f 00 00 00            	jne	0x3341 <m5mols_set_fmt+0x341>
    32a2: e8 00 00 00 00               	callq	0x32a7 <m5mols_set_fmt+0x2a7>
		00000000000032a3:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
    32a7: ba 30 00 00 00               	movl	$48, %edx
    32ac: 4c 89 ff                     	movq	%r15, %rdi
    32af: 48 8b 74 24 08               	movq	8(%rsp), %rsi
    32b4: e8 00 00 00 00               	callq	0x32b9 <m5mols_set_fmt+0x2b9>
		00000000000032b5:  R_X86_64_PLT32	memcpy-0x4
    32b9: 49 8d bd 05 05 00 00         	leaq	1285(%r13), %rdi
    32c0: e8 00 00 00 00               	callq	0x32c5 <m5mols_set_fmt+0x2c5>
		00000000000032c1:  R_X86_64_PLT32	__asan_store1_noabort-0x4
    32c5: 45 88 a5 05 05 00 00         	movb	%r12b, 1285(%r13)
    32cc: 49 8d bd b0 04 00 00         	leaq	1200(%r13), %rdi
    32d3: e8 00 00 00 00               	callq	0x32d8 <m5mols_set_fmt+0x2d8>
		00000000000032d4:  R_X86_64_PLT32	__asan_store4_noabort-0x4
    32d8: 8b 04 24                     	movl	(%rsp), %eax
    32db: 41 89 85 b0 04 00 00         	movl	%eax, 1200(%r13)
    32e2: eb 62                        	jmp	0x3346 <m5mols_set_fmt+0x346>
    32e4: e8 00 00 00 00               	callq	0x32e9 <m5mols_set_fmt+0x2e9>
		00000000000032e5:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
    32e9: b8 ea ff ff ff               	movl	$4294967274, %eax       # imm = 0xFFFFFFEA
    32ee: eb 67                        	jmp	0x3357 <m5mols_set_fmt+0x357>
    32f0: 4c 8b 74 24 30               	movq	48(%rsp), %r14
    32f5: 4d 85 f6                     	testq	%r14, %r14
    32f8: 74 56                        	je	0x3350 <m5mols_set_fmt+0x350>
    32fa: 48 8b 5c 24 18               	movq	24(%rsp), %rbx
    32ff: 48 8d 7b 38                  	leaq	56(%rbx), %rdi
    3303: e8 00 00 00 00               	callq	0x3308 <m5mols_set_fmt+0x308>
		0000000000003304:  R_X86_64_PLT32	__asan_load2_noabort-0x4
    3308: 0f b7 5b 38                  	movzwl	56(%rbx), %ebx
    330c: 31 ff                        	xorl	%edi, %edi
    330e: 89 de                        	movl	%ebx, %esi
    3310: e8 00 00 00 00               	callq	0x3315 <m5mols_set_fmt+0x315>
		0000000000003311:  R_X86_64_PLT32	__sanitizer_cov_trace_const_cmp2-0x4
    3315: 85 db                        	testl	%ebx, %ebx
    3317: 74 56                        	je	0x336f <m5mols_set_fmt+0x36f>
    3319: e8 00 00 00 00               	callq	0x331e <m5mols_set_fmt+0x31e>
		000000000000331a:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
    331e: 49 8d be a8 00 00 00         	leaq	168(%r14), %rdi
    3325: e8 00 00 00 00               	callq	0x332a <m5mols_set_fmt+0x32a>
		0000000000003326:  R_X86_64_PLT32	__asan_load8_noabort-0x4
    332a: 4d 8b be a8 00 00 00         	movq	168(%r14), %r15
    3331: 4d 85 ff                     	testq	%r15, %r15
    3334: 0f 85 df fe ff ff            	jne	0x3219 <m5mols_set_fmt+0x219>
    333a: e8 00 00 00 00               	callq	0x333f <m5mols_set_fmt+0x33f>
		000000000000333b:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
    333f: eb 14                        	jmp	0x3355 <m5mols_set_fmt+0x355>
    3341: e8 00 00 00 00               	callq	0x3346 <m5mols_set_fmt+0x346>
		0000000000003342:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
    3346: 4c 89 f7                     	movq	%r14, %rdi
    3349: e8 00 00 00 00               	callq	0x334e <m5mols_set_fmt+0x34e>
		000000000000334a:  R_X86_64_PLT32	mutex_unlock-0x4
    334e: eb 05                        	jmp	0x3355 <m5mols_set_fmt+0x355>
    3350: e8 00 00 00 00               	callq	0x3355 <m5mols_set_fmt+0x355>
		0000000000003351:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
    3355: 31 c0                        	xorl	%eax, %eax
    3357: 48 83 c4 48                  	addq	$72, %rsp
    335b: 5b                           	popq	%rbx
    335c: 41 5c                        	popq	%r12
    335e: 41 5d                        	popq	%r13
    3360: 41 5e                        	popq	%r14
    3362: 41 5f                        	popq	%r15
    3364: 5d                           	popq	%rbp
    3365: 31 c9                        	xorl	%ecx, %ecx
    3367: 31 ff                        	xorl	%edi, %edi
    3369: 31 d2                        	xorl	%edx, %edx
    336b: 31 f6                        	xorl	%esi, %esi
    336d: c3                           	retq
    336e: cc                           	int3
    336f: e8 00 00 00 00               	callq	0x3374 <m5mols_set_fmt+0x374>
		0000000000003370:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
    3374: 90                           	nop
    3375: 0f 0b                        	ud2
    3377: 90                           	nop
    3378: eb a4                        	jmp	0x331e <m5mols_set_fmt+0x31e>
    337a: e8 00 00 00 00               	callq	0x337f <m5mols_set_fmt+0x37f>
		000000000000337b:  R_X86_64_PLT32	__sanitizer_cov_trace_pc-0x4
    337f: be 02 00 00 00               	movl	$2, %esi
    3384: 48 c7 c7 00 00 00 00         	movq	$0, %rdi
		0000000000003387:  R_X86_64_32S	.data+0x240
    338b: e8 00 00 00 00               	callq	0x3390 <m5mols_set_fmt+0x390>
		000000000000338c:  R_X86_64_PLT32	__ubsan_handle_out_of_bounds-0x4
    3390: 66 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 	nopw	%cs:(%rax,%rax)
    339f: 66 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 	nopw	%cs:(%rax,%rax)
    33ae: 66 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 	nopw	%cs:(%rax,%rax)
    33bd: 0f 1f 00                     	nopl	(%rax)

The vmlinux.o warnings have come up before: https://lore.kernel.org/YjxTt3pFIcV3lt8I@zn.tnic/

The arch/x86/kvm/kvm.o warnings might be resolved soon? https://lore.kernel.org/a387ad62-4f96-c226-d062-5e1905ef1aee@redhat.com/

@nickdesaulniers nickdesaulniers changed the title objtool: foo() falls through to the next function bar() CONFIG_UBSAN_DIV_ZERO causes objtool: foo() falls through to the next function bar() Jul 14, 2022
intel-lab-lkp pushed a commit to intel-lab-lkp/linux that referenced this issue Jul 14, 2022
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough
warnings from objtool.

In the case of uncheck division, UBSAN_DIV_ZERO may introduce new
control flow to check for division by zero. Because the result of the
division is undefined, LLVM may optimize the control flow such that
after the call to __ubsan_handle_divrem_overflow doesn't matter. If
panic_on_warn was set, __ubsan_handle_divrem_overflow would panic. The
problem is is that panic_on_warn is run time configurable. If it's
disabled, then we cannot guarantee that we will be able to recover
safely.  Disable this config for clang until we can come up with a
solution in LLVM.

Link: ClangBuiltLinux#1657
Link: llvm/llvm-project#56289
Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
@nickdesaulniers
Copy link
Member Author

submitted a patch to disable this config for now: https://lore.kernel.org/llvm/20220714205646.4023495-1-ndesaulniers@google.com/

@nickdesaulniers nickdesaulniers self-assigned this Jul 14, 2022
@nickdesaulniers nickdesaulniers added the [PATCH] Submitted A patch has been submitted for review label Jul 14, 2022
torvalds pushed a commit to torvalds/linux that referenced this issue Jul 14, 2022
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough
warnings from objtool.

In the case of uncheck division, UBSAN_DIV_ZERO may introduce new
control flow to check for division by zero.

Because the result of the division is undefined, LLVM may optimize the
control flow such that after the call to __ubsan_handle_divrem_overflow
doesn't matter.  If panic_on_warn was set,
__ubsan_handle_divrem_overflow would panic.

The problem is is that panic_on_warn is run time configurable.  If it's
disabled, then we cannot guarantee that we will be able to recover
safely.  Disable this config for clang until we can come up with a
solution in LLVM.

Link: ClangBuiltLinux#1657
Link: llvm/llvm-project#56289
Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Acked-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
@nickdesaulniers
Copy link
Member Author

Linus picked up https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e5d523f1ae8f2cef01f8e071aeee432654166708. Let's keep this open so that we can work towards getting the config option re-enabled.

@nickdesaulniers nickdesaulniers added [WORKAROUND] Applied This bug has an applied workaround and removed [PATCH] Submitted A patch has been submitted for review labels Jul 15, 2022
@nickdesaulniers nickdesaulniers removed their assignment Jul 18, 2022
Dark-Matter7232 pushed a commit to Dark-Matter7232/android_kernel_realme_sm8350 that referenced this issue Feb 18, 2024
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough
warnings from objtool.

In the case of uncheck division, UBSAN_DIV_ZERO may introduce new
control flow to check for division by zero.

Because the result of the division is undefined, LLVM may optimize the
control flow such that after the call to __ubsan_handle_divrem_overflow
doesn't matter.  If panic_on_warn was set,
__ubsan_handle_divrem_overflow would panic.

The problem is is that panic_on_warn is run time configurable.  If it's
disabled, then we cannot guarantee that we will be able to recover
safely.  Disable this config for clang until we can come up with a
solution in LLVM.

Link: ClangBuiltLinux/linux#1657
Link: llvm/llvm-project#56289
Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Acked-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Change-Id: I9e9a142b2e332a210a757a30e732e09f0febddbc
Signed-off-by: Alexander Winkowski <dereference23@outlook.com>
Hanamizaki pushed a commit to Hanamizaki/android_kernel_xiaomi_sm6375 that referenced this issue Mar 24, 2024
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough
warnings from objtool.

In the case of uncheck division, UBSAN_DIV_ZERO may introduce new
control flow to check for division by zero.

Because the result of the division is undefined, LLVM may optimize the
control flow such that after the call to __ubsan_handle_divrem_overflow
doesn't matter.  If panic_on_warn was set,
__ubsan_handle_divrem_overflow would panic.

The problem is is that panic_on_warn is run time configurable.  If it's
disabled, then we cannot guarantee that we will be able to recover
safely.  Disable this config for clang until we can come up with a
solution in LLVM.

Link: ClangBuiltLinux/linux#1657
Link: llvm/llvm-project#56289
Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Acked-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Change-Id: I9e9a142b2e332a210a757a30e732e09f0febddbc
Signed-off-by: Alexander Winkowski <dereference23@outlook.com>
TogoFire pushed a commit to dev-sm8350/kernel_oneplus_sm8350 that referenced this issue May 24, 2024
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough
warnings from objtool.

In the case of uncheck division, UBSAN_DIV_ZERO may introduce new
control flow to check for division by zero.

Because the result of the division is undefined, LLVM may optimize the
control flow such that after the call to __ubsan_handle_divrem_overflow
doesn't matter.  If panic_on_warn was set,
__ubsan_handle_divrem_overflow would panic.

The problem is is that panic_on_warn is run time configurable.  If it's
disabled, then we cannot guarantee that we will be able to recover
safely.  Disable this config for clang until we can come up with a
solution in LLVM.

Link: ClangBuiltLinux/linux#1657
Link: llvm/llvm-project#56289
Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Change-Id: I98dd1aee705b3c1ebca270ce641b328ef150bdf4
Acked-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Signed-off-by: Alexander Winkowski <dereference23@outlook.com>
(cherry picked from commit 65b37d8468a4afffbef4ba91c5ae53d3d90e7911)
Signed-off-by: TogoFire <togofire@mailfence.com>
TogoFire pushed a commit to dev-sm8350/kernel_oneplus_sm8350 that referenced this issue May 25, 2024
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough
warnings from objtool.

In the case of uncheck division, UBSAN_DIV_ZERO may introduce new
control flow to check for division by zero.

Because the result of the division is undefined, LLVM may optimize the
control flow such that after the call to __ubsan_handle_divrem_overflow
doesn't matter.  If panic_on_warn was set,
__ubsan_handle_divrem_overflow would panic.

The problem is is that panic_on_warn is run time configurable.  If it's
disabled, then we cannot guarantee that we will be able to recover
safely.  Disable this config for clang until we can come up with a
solution in LLVM.

Link: ClangBuiltLinux/linux#1657
Link: llvm/llvm-project#56289
Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Change-Id: I98dd1aee705b3c1ebca270ce641b328ef150bdf4
Acked-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Signed-off-by: Alexander Winkowski <dereference23@outlook.com>
(cherry picked from commit 65b37d8468a4afffbef4ba91c5ae53d3d90e7911)
Signed-off-by: TogoFire <togofire@mailfence.com>
TogoFire pushed a commit to dev-sm8350/kernel_oneplus_sm8350 that referenced this issue May 25, 2024
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough
warnings from objtool.

In the case of uncheck division, UBSAN_DIV_ZERO may introduce new
control flow to check for division by zero.

Because the result of the division is undefined, LLVM may optimize the
control flow such that after the call to __ubsan_handle_divrem_overflow
doesn't matter.  If panic_on_warn was set,
__ubsan_handle_divrem_overflow would panic.

The problem is is that panic_on_warn is run time configurable.  If it's
disabled, then we cannot guarantee that we will be able to recover
safely.  Disable this config for clang until we can come up with a
solution in LLVM.

Link: ClangBuiltLinux/linux#1657
Link: llvm/llvm-project#56289
Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Change-Id: I98dd1aee705b3c1ebca270ce641b328ef150bdf4
Acked-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Signed-off-by: Alexander Winkowski <dereference23@outlook.com>
(cherry picked from commit 65b37d8468a4afffbef4ba91c5ae53d3d90e7911)
Signed-off-by: TogoFire <togofire@mailfence.com>
TogoFire pushed a commit to Dev-msm8953/kernel_xiaomi_msm8953 that referenced this issue May 25, 2024
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough
warnings from objtool.

In the case of uncheck division, UBSAN_DIV_ZERO may introduce new
control flow to check for division by zero.

Because the result of the division is undefined, LLVM may optimize the
control flow such that after the call to __ubsan_handle_divrem_overflow
doesn't matter.  If panic_on_warn was set,
__ubsan_handle_divrem_overflow would panic.

The problem is is that panic_on_warn is run time configurable.  If it's
disabled, then we cannot guarantee that we will be able to recover
safely.  Disable this config for clang until we can come up with a
solution in LLVM.

Link: ClangBuiltLinux/linux#1657
Link: llvm/llvm-project#56289
Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Change-Id: Ia4bd02e2340f830b5027a3871a94f06d6c0dcfa2
Acked-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Signed-off-by: Alexander Winkowski <dereference23@outlook.com>
(cherry picked from commit 65b37d8468a4afffbef4ba91c5ae53d3d90e7911)
Signed-off-by: TogoFire <togofire@mailfence.com>
TogoFire pushed a commit to dev-sm8350/kernel_oneplus_sm8350 that referenced this issue Jun 3, 2024
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough
warnings from objtool.

In the case of uncheck division, UBSAN_DIV_ZERO may introduce new
control flow to check for division by zero.

Because the result of the division is undefined, LLVM may optimize the
control flow such that after the call to __ubsan_handle_divrem_overflow
doesn't matter.  If panic_on_warn was set,
__ubsan_handle_divrem_overflow would panic.

The problem is is that panic_on_warn is run time configurable.  If it's
disabled, then we cannot guarantee that we will be able to recover
safely.  Disable this config for clang until we can come up with a
solution in LLVM.

Link: ClangBuiltLinux/linux#1657
Link: llvm/llvm-project#56289
Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Change-Id: Ia4bd02e2340f830b5027a3871a94f06d6c0dcfa2
Acked-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Signed-off-by: Alexander Winkowski <dereference23@outlook.com>
(cherry picked from commit 65b37d8468a4afffbef4ba91c5ae53d3d90e7911)
Signed-off-by: TogoFire <togofire@mailfence.com>
TogoFire pushed a commit to dev-sm8350/kernel_oneplus_sm8350 that referenced this issue Jun 21, 2024
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough
warnings from objtool.

In the case of uncheck division, UBSAN_DIV_ZERO may introduce new
control flow to check for division by zero.

Because the result of the division is undefined, LLVM may optimize the
control flow such that after the call to __ubsan_handle_divrem_overflow
doesn't matter.  If panic_on_warn was set,
__ubsan_handle_divrem_overflow would panic.

The problem is is that panic_on_warn is run time configurable.  If it's
disabled, then we cannot guarantee that we will be able to recover
safely.  Disable this config for clang until we can come up with a
solution in LLVM.

Link: ClangBuiltLinux/linux#1657
Link: llvm/llvm-project#56289
Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Change-Id: Iac6fed9ff2f7aab48bb559a5586910db31b5a9e9
Acked-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Signed-off-by: Alexander Winkowski <dereference23@outlook.com>
(cherry picked from commit 65b37d8468a4afffbef4ba91c5ae53d3d90e7911)
Signed-off-by: TogoFire <togofire@mailfence.com>
TogoFire pushed a commit to dev-sm8350/kernel_oneplus_sm8350 that referenced this issue Jun 21, 2024
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough
warnings from objtool.

In the case of uncheck division, UBSAN_DIV_ZERO may introduce new
control flow to check for division by zero.

Because the result of the division is undefined, LLVM may optimize the
control flow such that after the call to __ubsan_handle_divrem_overflow
doesn't matter.  If panic_on_warn was set,
__ubsan_handle_divrem_overflow would panic.

The problem is is that panic_on_warn is run time configurable.  If it's
disabled, then we cannot guarantee that we will be able to recover
safely.  Disable this config for clang until we can come up with a
solution in LLVM.

Link: ClangBuiltLinux/linux#1657
Link: llvm/llvm-project#56289
Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Change-Id: Iac6fed9ff2f7aab48bb559a5586910db31b5a9e9
Acked-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Signed-off-by: Alexander Winkowski <dereference23@outlook.com>
(cherry picked from commit 65b37d8468a4afffbef4ba91c5ae53d3d90e7911)
Signed-off-by: TogoFire <togofire@mailfence.com>
TogoFire pushed a commit to dev-sm8350/kernel_oneplus_sm8350 that referenced this issue Jul 4, 2024
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough
warnings from objtool.

In the case of uncheck division, UBSAN_DIV_ZERO may introduce new
control flow to check for division by zero.

Because the result of the division is undefined, LLVM may optimize the
control flow such that after the call to __ubsan_handle_divrem_overflow
doesn't matter.  If panic_on_warn was set,
__ubsan_handle_divrem_overflow would panic.

The problem is is that panic_on_warn is run time configurable.  If it's
disabled, then we cannot guarantee that we will be able to recover
safely.  Disable this config for clang until we can come up with a
solution in LLVM.

Link: ClangBuiltLinux/linux#1657
Link: llvm/llvm-project#56289
Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Change-Id: Iac6fed9ff2f7aab48bb559a5586910db31b5a9e9
Acked-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Signed-off-by: Alexander Winkowski <dereference23@outlook.com>
(cherry picked from commit 65b37d8468a4afffbef4ba91c5ae53d3d90e7911)
Signed-off-by: TogoFire <togofire@mailfence.com>
TogoFire pushed a commit to dev-sm8350/kernel_oneplus_sm8350 that referenced this issue Jul 11, 2024
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough
warnings from objtool.

In the case of uncheck division, UBSAN_DIV_ZERO may introduce new
control flow to check for division by zero.

Because the result of the division is undefined, LLVM may optimize the
control flow such that after the call to __ubsan_handle_divrem_overflow
doesn't matter.  If panic_on_warn was set,
__ubsan_handle_divrem_overflow would panic.

The problem is is that panic_on_warn is run time configurable.  If it's
disabled, then we cannot guarantee that we will be able to recover
safely.  Disable this config for clang until we can come up with a
solution in LLVM.

Link: ClangBuiltLinux/linux#1657
Link: llvm/llvm-project#56289
Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Change-Id: Iac6fed9ff2f7aab48bb559a5586910db31b5a9e9
Acked-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Signed-off-by: Alexander Winkowski <dereference23@outlook.com>
(cherry picked from commit 65b37d8468a4afffbef4ba91c5ae53d3d90e7911)
Signed-off-by: TogoFire <togofire@mailfence.com>
TogoFire pushed a commit to dev-sm8350/kernel_oneplus_sm8350 that referenced this issue Jul 23, 2024
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough
warnings from objtool.

In the case of uncheck division, UBSAN_DIV_ZERO may introduce new
control flow to check for division by zero.

Because the result of the division is undefined, LLVM may optimize the
control flow such that after the call to __ubsan_handle_divrem_overflow
doesn't matter.  If panic_on_warn was set,
__ubsan_handle_divrem_overflow would panic.

The problem is is that panic_on_warn is run time configurable.  If it's
disabled, then we cannot guarantee that we will be able to recover
safely.  Disable this config for clang until we can come up with a
solution in LLVM.

Link: ClangBuiltLinux/linux#1657
Link: llvm/llvm-project#56289
Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Change-Id: Iac6fed9ff2f7aab48bb559a5586910db31b5a9e9
Acked-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Signed-off-by: Alexander Winkowski <dereference23@outlook.com>
(cherry picked from commit 65b37d8468a4afffbef4ba91c5ae53d3d90e7911)
Signed-off-by: TogoFire <togofire@mailfence.com>
TogoFire pushed a commit to dev-sm8350/kernel_oneplus_sm8350 that referenced this issue Jul 30, 2024
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough
warnings from objtool.

In the case of uncheck division, UBSAN_DIV_ZERO may introduce new
control flow to check for division by zero.

Because the result of the division is undefined, LLVM may optimize the
control flow such that after the call to __ubsan_handle_divrem_overflow
doesn't matter.  If panic_on_warn was set,
__ubsan_handle_divrem_overflow would panic.

The problem is is that panic_on_warn is run time configurable.  If it's
disabled, then we cannot guarantee that we will be able to recover
safely.  Disable this config for clang until we can come up with a
solution in LLVM.

Link: ClangBuiltLinux/linux#1657
Link: llvm/llvm-project#56289
Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Change-Id: Ic42632f882281fd379df1638edf3a5ac0ebb5570
Acked-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Signed-off-by: Alexander Winkowski <dereference23@outlook.com>
(cherry picked from commit 65b37d8468a4afffbef4ba91c5ae53d3d90e7911)
Signed-off-by: TogoFire <togofire@mailfence.com>
TogoFire pushed a commit to dev-sm8350/kernel_oneplus_sm8350 that referenced this issue Jul 31, 2024
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough
warnings from objtool.

In the case of uncheck division, UBSAN_DIV_ZERO may introduce new
control flow to check for division by zero.

Because the result of the division is undefined, LLVM may optimize the
control flow such that after the call to __ubsan_handle_divrem_overflow
doesn't matter.  If panic_on_warn was set,
__ubsan_handle_divrem_overflow would panic.

The problem is is that panic_on_warn is run time configurable.  If it's
disabled, then we cannot guarantee that we will be able to recover
safely.  Disable this config for clang until we can come up with a
solution in LLVM.

Link: ClangBuiltLinux/linux#1657
Link: llvm/llvm-project#56289
Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Change-Id: I1f3177aa1bf13dec27fa9af165debfbeab1972e2
Acked-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Signed-off-by: Alexander Winkowski <dereference23@outlook.com>
(cherry picked from commit 65b37d8468a4afffbef4ba91c5ae53d3d90e7911)
Signed-off-by: TogoFire <togofire@mailfence.com>
TogoFire pushed a commit to dev-sm8350/kernel_oneplus_sm8350 that referenced this issue Aug 1, 2024
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough
warnings from objtool.

In the case of uncheck division, UBSAN_DIV_ZERO may introduce new
control flow to check for division by zero.

Because the result of the division is undefined, LLVM may optimize the
control flow such that after the call to __ubsan_handle_divrem_overflow
doesn't matter.  If panic_on_warn was set,
__ubsan_handle_divrem_overflow would panic.

The problem is is that panic_on_warn is run time configurable.  If it's
disabled, then we cannot guarantee that we will be able to recover
safely.  Disable this config for clang until we can come up with a
solution in LLVM.

Link: ClangBuiltLinux/linux#1657
Link: llvm/llvm-project#56289
Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Change-Id: If70d1bbafe037f6f7d92de37eb3596d73e96aabb
Acked-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Signed-off-by: Alexander Winkowski <dereference23@outlook.com>
(cherry picked from commit 65b37d8468a4afffbef4ba91c5ae53d3d90e7911)
Signed-off-by: TogoFire <togofire@mailfence.com>
TogoFire pushed a commit to dev-sm8350/kernel_oneplus_sm8350 that referenced this issue Aug 4, 2024
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough
warnings from objtool.

In the case of uncheck division, UBSAN_DIV_ZERO may introduce new
control flow to check for division by zero.

Because the result of the division is undefined, LLVM may optimize the
control flow such that after the call to __ubsan_handle_divrem_overflow
doesn't matter.  If panic_on_warn was set,
__ubsan_handle_divrem_overflow would panic.

The problem is is that panic_on_warn is run time configurable.  If it's
disabled, then we cannot guarantee that we will be able to recover
safely.  Disable this config for clang until we can come up with a
solution in LLVM.

Link: ClangBuiltLinux/linux#1657
Link: llvm/llvm-project#56289
Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Change-Id: I28db1f1fe9da8787264431a191e5fc6e4b7f2ddb
Acked-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Signed-off-by: Alexander Winkowski <dereference23@outlook.com>
(cherry picked from commit 65b37d8468a4afffbef4ba91c5ae53d3d90e7911)
Signed-off-by: TogoFire <togofire@mailfence.com>
TogoFire pushed a commit to dev-sm8350/kernel_oneplus_sm8350 that referenced this issue Aug 7, 2024
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough
warnings from objtool.

In the case of uncheck division, UBSAN_DIV_ZERO may introduce new
control flow to check for division by zero.

Because the result of the division is undefined, LLVM may optimize the
control flow such that after the call to __ubsan_handle_divrem_overflow
doesn't matter.  If panic_on_warn was set,
__ubsan_handle_divrem_overflow would panic.

The problem is is that panic_on_warn is run time configurable.  If it's
disabled, then we cannot guarantee that we will be able to recover
safely.  Disable this config for clang until we can come up with a
solution in LLVM.

Link: ClangBuiltLinux/linux#1657
Link: llvm/llvm-project#56289
Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Change-Id: I28db1f1fe9da8787264431a191e5fc6e4b7f2ddb
Acked-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Signed-off-by: Alexander Winkowski <dereference23@outlook.com>
(cherry picked from commit 65b37d8468a4afffbef4ba91c5ae53d3d90e7911)
Signed-off-by: TogoFire <togofire@mailfence.com>
TogoFire pushed a commit to dev-sm8350/kernel_oneplus_sm8350 that referenced this issue Aug 11, 2024
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough
warnings from objtool.

In the case of uncheck division, UBSAN_DIV_ZERO may introduce new
control flow to check for division by zero.

Because the result of the division is undefined, LLVM may optimize the
control flow such that after the call to __ubsan_handle_divrem_overflow
doesn't matter.  If panic_on_warn was set,
__ubsan_handle_divrem_overflow would panic.

The problem is is that panic_on_warn is run time configurable.  If it's
disabled, then we cannot guarantee that we will be able to recover
safely.  Disable this config for clang until we can come up with a
solution in LLVM.

Link: ClangBuiltLinux/linux#1657
Link: llvm/llvm-project#56289
Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Change-Id: I28db1f1fe9da8787264431a191e5fc6e4b7f2ddb
Acked-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Signed-off-by: Alexander Winkowski <dereference23@outlook.com>
(cherry picked from commit 65b37d8468a4afffbef4ba91c5ae53d3d90e7911)
Signed-off-by: TogoFire <togofire@mailfence.com>
TogoFire pushed a commit to dev-sm8350/kernel_oneplus_sm8350 that referenced this issue Aug 13, 2024
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough
warnings from objtool.

In the case of uncheck division, UBSAN_DIV_ZERO may introduce new
control flow to check for division by zero.

Because the result of the division is undefined, LLVM may optimize the
control flow such that after the call to __ubsan_handle_divrem_overflow
doesn't matter.  If panic_on_warn was set,
__ubsan_handle_divrem_overflow would panic.

The problem is is that panic_on_warn is run time configurable.  If it's
disabled, then we cannot guarantee that we will be able to recover
safely.  Disable this config for clang until we can come up with a
solution in LLVM.

Link: ClangBuiltLinux/linux#1657
Link: llvm/llvm-project#56289
Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Change-Id: I28db1f1fe9da8787264431a191e5fc6e4b7f2ddb
Acked-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Signed-off-by: Alexander Winkowski <dereference23@outlook.com>
(cherry picked from commit 65b37d8468a4afffbef4ba91c5ae53d3d90e7911)
Signed-off-by: TogoFire <togofire@mailfence.com>
TogoFire pushed a commit to dev-sm8350/kernel_oneplus_sm8350 that referenced this issue Aug 14, 2024
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough
warnings from objtool.

In the case of uncheck division, UBSAN_DIV_ZERO may introduce new
control flow to check for division by zero.

Because the result of the division is undefined, LLVM may optimize the
control flow such that after the call to __ubsan_handle_divrem_overflow
doesn't matter.  If panic_on_warn was set,
__ubsan_handle_divrem_overflow would panic.

The problem is is that panic_on_warn is run time configurable.  If it's
disabled, then we cannot guarantee that we will be able to recover
safely.  Disable this config for clang until we can come up with a
solution in LLVM.

Link: ClangBuiltLinux/linux#1657
Link: llvm/llvm-project#56289
Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Change-Id: I28db1f1fe9da8787264431a191e5fc6e4b7f2ddb
Acked-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Signed-off-by: Alexander Winkowski <dereference23@outlook.com>
(cherry picked from commit 65b37d8468a4afffbef4ba91c5ae53d3d90e7911)
Signed-off-by: TogoFire <togofire@mailfence.com>
TogoFire pushed a commit to dev-sm8350/kernel_oneplus_sm8350 that referenced this issue Aug 22, 2024
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough
warnings from objtool.

In the case of uncheck division, UBSAN_DIV_ZERO may introduce new
control flow to check for division by zero.

Because the result of the division is undefined, LLVM may optimize the
control flow such that after the call to __ubsan_handle_divrem_overflow
doesn't matter.  If panic_on_warn was set,
__ubsan_handle_divrem_overflow would panic.

The problem is is that panic_on_warn is run time configurable.  If it's
disabled, then we cannot guarantee that we will be able to recover
safely.  Disable this config for clang until we can come up with a
solution in LLVM.

Link: ClangBuiltLinux/linux#1657
Link: llvm/llvm-project#56289
Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Change-Id: I28db1f1fe9da8787264431a191e5fc6e4b7f2ddb
Acked-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Signed-off-by: Alexander Winkowski <dereference23@outlook.com>
(cherry picked from commit 65b37d8468a4afffbef4ba91c5ae53d3d90e7911)
Signed-off-by: TogoFire <togofire@mailfence.com>
TogoFire pushed a commit to dev-sm8350/kernel_oneplus_sm8350 that referenced this issue Sep 5, 2024
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough
warnings from objtool.

In the case of uncheck division, UBSAN_DIV_ZERO may introduce new
control flow to check for division by zero.

Because the result of the division is undefined, LLVM may optimize the
control flow such that after the call to __ubsan_handle_divrem_overflow
doesn't matter.  If panic_on_warn was set,
__ubsan_handle_divrem_overflow would panic.

The problem is is that panic_on_warn is run time configurable.  If it's
disabled, then we cannot guarantee that we will be able to recover
safely.  Disable this config for clang until we can come up with a
solution in LLVM.

Link: ClangBuiltLinux/linux#1657
Link: llvm/llvm-project#56289
Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Change-Id: Ib148a383852bd6a0e9e2c8bafcd10961c37991dc
Acked-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Signed-off-by: Alexander Winkowski <dereference23@outlook.com>
(cherry picked from commit 65b37d8468a4afffbef4ba91c5ae53d3d90e7911)
Signed-off-by: TogoFire <togofire@mailfence.com>
TogoFire pushed a commit to dev-sm8350/kernel_oneplus_sm8350 that referenced this issue Sep 6, 2024
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough
warnings from objtool.

In the case of uncheck division, UBSAN_DIV_ZERO may introduce new
control flow to check for division by zero.

Because the result of the division is undefined, LLVM may optimize the
control flow such that after the call to __ubsan_handle_divrem_overflow
doesn't matter.  If panic_on_warn was set,
__ubsan_handle_divrem_overflow would panic.

The problem is is that panic_on_warn is run time configurable.  If it's
disabled, then we cannot guarantee that we will be able to recover
safely.  Disable this config for clang until we can come up with a
solution in LLVM.

Link: ClangBuiltLinux/linux#1657
Link: llvm/llvm-project#56289
Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Change-Id: Ib148a383852bd6a0e9e2c8bafcd10961c37991dc
Acked-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Signed-off-by: Alexander Winkowski <dereference23@outlook.com>
(cherry picked from commit 65b37d8468a4afffbef4ba91c5ae53d3d90e7911)
Signed-off-by: TogoFire <togofire@mailfence.com>
TogoFire pushed a commit to dev-sm8350/kernel_oneplus_sm8350 that referenced this issue Sep 14, 2024
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough
warnings from objtool.

In the case of uncheck division, UBSAN_DIV_ZERO may introduce new
control flow to check for division by zero.

Because the result of the division is undefined, LLVM may optimize the
control flow such that after the call to __ubsan_handle_divrem_overflow
doesn't matter.  If panic_on_warn was set,
__ubsan_handle_divrem_overflow would panic.

The problem is is that panic_on_warn is run time configurable.  If it's
disabled, then we cannot guarantee that we will be able to recover
safely.  Disable this config for clang until we can come up with a
solution in LLVM.

Link: ClangBuiltLinux/linux#1657
Link: llvm/llvm-project#56289
Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Change-Id: Ib148a383852bd6a0e9e2c8bafcd10961c37991dc
Acked-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Signed-off-by: Alexander Winkowski <dereference23@outlook.com>
(cherry picked from commit 65b37d8468a4afffbef4ba91c5ae53d3d90e7911)
Signed-off-by: TogoFire <togofire@mailfence.com>
TogoFire pushed a commit to dev-sm8350/kernel_oneplus_sm8350 that referenced this issue Sep 14, 2024
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough
warnings from objtool.

In the case of uncheck division, UBSAN_DIV_ZERO may introduce new
control flow to check for division by zero.

Because the result of the division is undefined, LLVM may optimize the
control flow such that after the call to __ubsan_handle_divrem_overflow
doesn't matter.  If panic_on_warn was set,
__ubsan_handle_divrem_overflow would panic.

The problem is is that panic_on_warn is run time configurable.  If it's
disabled, then we cannot guarantee that we will be able to recover
safely.  Disable this config for clang until we can come up with a
solution in LLVM.

Link: ClangBuiltLinux/linux#1657
Link: llvm/llvm-project#56289
Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Change-Id: Ib148a383852bd6a0e9e2c8bafcd10961c37991dc
Acked-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Signed-off-by: Alexander Winkowski <dereference23@outlook.com>
(cherry picked from commit 65b37d8468a4afffbef4ba91c5ae53d3d90e7911)
Signed-off-by: TogoFire <togofire@mailfence.com>
TogoFire pushed a commit to dev-sm8350/kernel_oneplus_sm8350 that referenced this issue Sep 24, 2024
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough
warnings from objtool.

In the case of uncheck division, UBSAN_DIV_ZERO may introduce new
control flow to check for division by zero.

Because the result of the division is undefined, LLVM may optimize the
control flow such that after the call to __ubsan_handle_divrem_overflow
doesn't matter.  If panic_on_warn was set,
__ubsan_handle_divrem_overflow would panic.

The problem is is that panic_on_warn is run time configurable.  If it's
disabled, then we cannot guarantee that we will be able to recover
safely.  Disable this config for clang until we can come up with a
solution in LLVM.

Link: ClangBuiltLinux/linux#1657
Link: llvm/llvm-project#56289
Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Change-Id: Ib148a383852bd6a0e9e2c8bafcd10961c37991dc
Acked-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Signed-off-by: Alexander Winkowski <dereference23@outlook.com>
(cherry picked from commit 65b37d8468a4afffbef4ba91c5ae53d3d90e7911)
Signed-off-by: TogoFire <togofire@mailfence.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[ARCH] x86_64 This bug impacts ARCH=x86_64 [CONFIG] allmodconfig Issue affects allmodconfig on certain architectures Reported upstream This bug was filed on LLVM’s issue tracker, Phabricator, or the kernel mailing list. [TOOL] objtool warning is produced by the kernel's objtool [WORKAROUND] Applied This bug has an applied workaround
Projects
None yet
Development

No branches or pull requests

2 participants