On Fri, Aug 04, 2023 at 07:44:28PM +0000, Qing Zhao wrote: > This is the 2nd version of the patch, per our discussion based on the > review comments for the 1st version, the major changes in this version
I've been using Coccinelle to find and annotate[1] structures (193 so far...), and I've encountered 2 cases of GCC internal errors. I'm working on a minimized test case, but just in case these details are immediately helpful, here's what I'm seeing: ../drivers/net/wireless/ath/wcn36xx/smd.c: In function 'wcn36xx_smd_rsp_process': ../drivers/net/wireless/ath/wcn36xx/smd.c:3299:5: error: incorrect sharing of tree nodes 3299 | int wcn36xx_smd_rsp_process(struct rpmsg_device *rpdev, | ^~~~~~~~~~~~~~~~~~~~~~~ MEM[(struct wcn36xx_hal_ind_msg *)_96] _15 = &MEM[(struct wcn36xx_hal_ind_msg *)_96].msg; during GIMPLE pass: objsz ../drivers/net/wireless/ath/wcn36xx/smd.c:3299:5: internal compiler error: verify_gimple failed 0xfe97fd verify_gimple_in_cfg(function*, bool, bool) ../../../../gcc/gcc/tree-cfg.cc:5646 0xe84894 execute_function_todo ../../../../gcc/gcc/passes.cc:2088 0xe84dee execute_todo ../../../../gcc/gcc/passes.cc:2142 The associated struct is: struct wcn36xx_hal_ind_msg { struct list_head list; size_t msg_len; u8 msg[] __counted_by(msg_len); }; And: ../drivers/usb/gadget/function/f_fs.c: In function '__ffs_epfile_read_data': ../drivers/usb/gadget/function/f_fs.c:900:16: error: incorrect sharing of tree nodes 900 | static ssize_t __ffs_epfile_read_data(struct ffs_epfile *epfile, | ^~~~~~~~~~~~~~~~~~~~~~ MEM[(struct ffs_buffer *)_67] _5 = &MEM[(struct ffs_buffer *)_67].storage; during GIMPLE pass: objsz ../drivers/usb/gadget/function/f_fs.c:900:16: internal compiler error: verify_gimple failed 0xfe97fd verify_gimple_in_cfg(function*, bool, bool) ../../../../gcc/gcc/tree-cfg.cc:5646 0xe84894 execute_function_todo ../../../../gcc/gcc/passes.cc:2088 0xe84dee execute_todo ../../../../gcc/gcc/passes.cc:2142 with: struct ffs_buffer { size_t length; char *data; char storage[] __counted_by(length); }; [1] https://github.com/kees/kernel-tools/blob/trunk/coccinelle/examples/counted_by.cocci -- Kees Cook