CC: [email protected] CC: [email protected] BCC: [email protected] CC: Linux Memory Management List <[email protected]> TO: Benjamin Tissoires <[email protected]> CC: Jiri Kosina <[email protected]> CC: Ping Cheng <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: cb153b68ff91cbc434f3de70ac549e110543e1bb commit: bebcc522fbee4bf51a2571378154ef2a4bf14724 [9076/11353] HID: core: for input reports, process the usages by priority list :::::: branch date: 24 hours ago :::::: commit date: 8 days ago config: i386-randconfig-c001 (https://download.01.org/0day-ci/archive/20220309/[email protected]/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project d271fc04d5b97b12e6b797c6067d3c96a8d7470e) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=bebcc522fbee4bf51a2571378154ef2a4bf14724 git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git git fetch --no-tags linux-next master git checkout bebcc522fbee4bf51a2571378154ef2a4bf14724 # save the config file to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=i386 clang-analyzer If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> clang-analyzer warnings: (new ones prefixed by >>) ^ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:52: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^~~~ drivers/hid/hid-core.c:1430:9: note: '?' condition is false } else if (n < 32) { ^ include/linux/compiler.h:56:28: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ include/linux/compiler.h:58:31: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^ drivers/hid/hid-core.c:1430:13: note: 'n' is >= 32 } else if (n < 32) { ^ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:86: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^~~~ include/linux/compiler.h:69:3: note: expanded from macro '__trace_if_value' (cond) ? \ ^~~~ drivers/hid/hid-core.c:1430:9: note: '?' condition is false } else if (n < 32) { ^ include/linux/compiler.h:56:28: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ include/linux/compiler.h:58:69: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^ include/linux/compiler.h:69:2: note: expanded from macro '__trace_if_value' (cond) ? \ ^ drivers/hid/hid-core.c:1430:9: note: Taking false branch } else if (n < 32) { ^ include/linux/compiler.h:56:23: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ drivers/hid/hid-core.c:1442:30: note: Passing the value 32 via 3rd parameter 'n' __implement(report, offset, n, value); ^ drivers/hid/hid-core.c:1442:2: note: Calling '__implement' __implement(report, offset, n, value); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/hid/hid-core.c:1405:9: note: Assuming the condition is false while (n - bits_to_set >= 0) { ^~~~~~~~~~~~~~~~~~~~ drivers/hid/hid-core.c:1405:2: note: Loop condition is false. Execution continues on line 1416 while (n - bits_to_set >= 0) { ^ drivers/hid/hid-core.c:1416:2: note: '?' condition is false if (n) { ^ include/linux/compiler.h:56:28: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ include/linux/compiler.h:58:31: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^ drivers/hid/hid-core.c:1416:6: note: 'n' is 32 if (n) { ^ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:86: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^~~~ include/linux/compiler.h:69:3: note: expanded from macro '__trace_if_value' (cond) ? \ ^~~~ drivers/hid/hid-core.c:1416:2: note: '?' condition is true if (n) { ^ include/linux/compiler.h:56:28: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ include/linux/compiler.h:58:69: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^ include/linux/compiler.h:69:2: note: expanded from macro '__trace_if_value' (cond) ? \ ^ drivers/hid/hid-core.c:1416:2: note: Taking true branch if (n) { ^ include/linux/compiler.h:56:23: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ drivers/hid/hid-core.c:1417:22: note: The result of the left shift is undefined due to shifting by '32', which is greater or equal to the width of type 'unsigned int' u8 bit_mask = ((1U << n) - 1); ^ ~ >> drivers/hid/hid-core.c:1665:30: warning: Although the value stored to >> 'field' is used in the enclosing expression, the value is never actually >> read from 'field' [clang-analyzer-deadcode.DeadStores] hid_input_fetch_field(hid, field = report->field[a], data); ^ ~~~~~~~~~~~~~~~~ drivers/hid/hid-core.c:1665:30: note: Although the value stored to 'field' is used in the enclosing expression, the value is never actually read from 'field' hid_input_fetch_field(hid, field = report->field[a], data); ^ ~~~~~~~~~~~~~~~~ drivers/hid/hid-core.c:2198:3: warning: Value stored to 'len' is never read [clang-analyzer-deadcode.DeadStores] len += sprintf(buf + len, "%shidraw%d", len ? "," : "", ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/hid/hid-core.c:2198:3: note: Value stored to 'len' is never read len += sprintf(buf + len, "%shidraw%d", len ? "," : "", ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 warning generated. drivers/net/phy/micrel.c:1109:2: warning: Value stored to 'regval' is never read [clang-analyzer-deadcode.DeadStores] regval = phy_read(phydev, KSZ8873MLL_GLOBAL_CONTROL_4); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/phy/micrel.c:1109:2: note: Value stored to 'regval' is never read regval = phy_read(phydev, KSZ8873MLL_GLOBAL_CONTROL_4); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 warning generated. Suppressed 1 warnings (1 with check filters). 1 warning generated. include/linux/jhash.h:95:25: warning: The left operand of '<<' is a garbage value [clang-analyzer-core.UndefinedBinaryOperatorResult] case 6: b += (u32)k[5]<<8; fallthrough; ^ net/batman-adv/bridge_loop_avoidance.c:2475:6: note: Assuming the condition is false if (!atomic_read(&bat_priv->bridge_loop_avoidance)) ^ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:52: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^~~~ net/batman-adv/bridge_loop_avoidance.c:2475:2: note: '?' condition is false if (!atomic_read(&bat_priv->bridge_loop_avoidance)) ^ include/linux/compiler.h:56:28: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ include/linux/compiler.h:58:31: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^ net/batman-adv/bridge_loop_avoidance.c:2475:2: note: '?' condition is false if (!atomic_read(&bat_priv->bridge_loop_avoidance)) ^ include/linux/compiler.h:56:28: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ include/linux/compiler.h:58:69: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^ include/linux/compiler.h:69:2: note: expanded from macro '__trace_if_value' (cond) ? \ ^ net/batman-adv/bridge_loop_avoidance.c:2475:2: note: Taking false branch if (!atomic_read(&bat_priv->bridge_loop_avoidance)) ^ include/linux/compiler.h:56:23: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ net/batman-adv/bridge_loop_avoidance.c:2479:7: note: 'primary_if' is non-null if (!primary_if) ^ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:52: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^~~~ net/batman-adv/bridge_loop_avoidance.c:2479:2: note: '?' condition is false if (!primary_if) ^ include/linux/compiler.h:56:28: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ include/linux/compiler.h:58:31: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^ net/batman-adv/bridge_loop_avoidance.c:2479:7: note: 'primary_if' is non-null if (!primary_if) ^ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:86: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^~~~ include/linux/compiler.h:69:3: note: expanded from macro '__trace_if_value' (cond) ? \ ^~~~ net/batman-adv/bridge_loop_avoidance.c:2479:2: note: '?' condition is false if (!primary_if) ^ include/linux/compiler.h:56:28: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ include/linux/compiler.h:58:69: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^ include/linux/compiler.h:69:2: note: expanded from macro '__trace_if_value' vim +1665 drivers/hid/hid-core.c dde5845a529ff75 Jiri Kosina 2006-12-08 1648 b79c1abae5e1972 Benjamin Tissoires 2022-02-03 1649 /* b79c1abae5e1972 Benjamin Tissoires 2022-02-03 1650 * Analyse a received report, and fetch the data from it. The field b79c1abae5e1972 Benjamin Tissoires 2022-02-03 1651 * content is stored for next report processing (we do differential b79c1abae5e1972 Benjamin Tissoires 2022-02-03 1652 * reporting to the layer). b79c1abae5e1972 Benjamin Tissoires 2022-02-03 1653 */ b79c1abae5e1972 Benjamin Tissoires 2022-02-03 1654 static void hid_process_report(struct hid_device *hid, b79c1abae5e1972 Benjamin Tissoires 2022-02-03 1655 struct hid_report *report, b79c1abae5e1972 Benjamin Tissoires 2022-02-03 1656 __u8 *data, b79c1abae5e1972 Benjamin Tissoires 2022-02-03 1657 int interrupt) b79c1abae5e1972 Benjamin Tissoires 2022-02-03 1658 { b79c1abae5e1972 Benjamin Tissoires 2022-02-03 1659 unsigned int a; bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1660 struct hid_field_entry *entry; b79c1abae5e1972 Benjamin Tissoires 2022-02-03 1661 struct hid_field *field; b79c1abae5e1972 Benjamin Tissoires 2022-02-03 1662 bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1663 /* first retrieve all incoming values in data */ bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1664 for (a = 0; a < report->maxfield; a++) bebcc522fbee4bf Benjamin Tissoires 2022-02-03 @1665 hid_input_fetch_field(hid, field = report->field[a], data); bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1666 bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1667 if (!list_empty(&report->field_entry_list)) { bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1668 /* INPUT_REPORT, we have a priority list of fields */ bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1669 list_for_each_entry(entry, bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1670 &report->field_entry_list, bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1671 list) { bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1672 field = entry->field; bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1673 bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1674 if (field->flags & HID_MAIN_ITEM_VARIABLE) bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1675 hid_process_event(hid, bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1676 field, bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1677 &field->usage[entry->index], bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1678 field->new_value[entry->index], bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1679 interrupt); bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1680 else bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1681 hid_input_array_field(hid, field, interrupt); bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1682 } bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1683 bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1684 /* we need to do the memcpy at the end for var items */ b79c1abae5e1972 Benjamin Tissoires 2022-02-03 1685 for (a = 0; a < report->maxfield; a++) { b79c1abae5e1972 Benjamin Tissoires 2022-02-03 1686 field = report->field[a]; b79c1abae5e1972 Benjamin Tissoires 2022-02-03 1687 bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1688 if (field->flags & HID_MAIN_ITEM_VARIABLE) bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1689 memcpy(field->value, field->new_value, bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1690 field->report_count * sizeof(__s32)); bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1691 } bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1692 } else { bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1693 /* FEATURE_REPORT, regular processing */ bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1694 for (a = 0; a < report->maxfield; a++) { bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1695 field = report->field[a]; b79c1abae5e1972 Benjamin Tissoires 2022-02-03 1696 b79c1abae5e1972 Benjamin Tissoires 2022-02-03 1697 if (field->flags & HID_MAIN_ITEM_VARIABLE) b79c1abae5e1972 Benjamin Tissoires 2022-02-03 1698 hid_input_var_field(hid, field, interrupt); b79c1abae5e1972 Benjamin Tissoires 2022-02-03 1699 else b79c1abae5e1972 Benjamin Tissoires 2022-02-03 1700 hid_input_array_field(hid, field, interrupt); b79c1abae5e1972 Benjamin Tissoires 2022-02-03 1701 } b79c1abae5e1972 Benjamin Tissoires 2022-02-03 1702 } bebcc522fbee4bf Benjamin Tissoires 2022-02-03 1703 } b79c1abae5e1972 Benjamin Tissoires 2022-02-03 1704 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected] _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
