Open nickdesaulniers opened 2 years ago
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.
There are a lot more warnings of this nature after https://github.com/llvm/llvm-project/commit/10c531cd5bf0166ce5bf42736506733b2285fdf8.
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.
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.
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
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/
submitted a patch to disable this config for now: https://lore.kernel.org/llvm/20220714205646.4023495-1-ndesaulniers@google.com/
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.
From this thread:
Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
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 benoreturn
(I haven't found anything in the IR or clang sources that assumes so), as hypothesized here.