* Re: [PATCH v4 1/2] platform/x86: Add Uniwill laptop driver [not found] <20250928013253.10869-2-W_Armin@gmx.de> @ 2025-09-28 20:42 ` kernel test robot 2025-10-02 18:41 ` Armin Wolf 2025-09-30 9:15 ` kernel test robot 1 sibling, 1 reply; 7+ messages in thread From: kernel test robot @ 2025-09-28 20:42 UTC (permalink / raw) To: Armin Wolf, ilpo.jarvinen, hdegoede, chumuzero, corbet, cs, wse, ggo Cc: llvm, oe-kbuild-all, linux-doc, linux-kernel, platform-driver-x86, rdunlap, alok.a.tiwari, linux-leds, lee, pobrn Hi Armin, kernel test robot noticed the following build warnings: [auto build test WARNING on lwn/docs-next] [also build test WARNING on linus/master v6.17-rc7 next-20250926] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Armin-Wolf/platform-x86-Add-Uniwill-laptop-driver/20250928-093543 base: git://git.lwn.net/linux.git docs-next patch link: https://lore.kernel.org/r/20250928013253.10869-2-W_Armin%40gmx.de patch subject: [PATCH v4 1/2] platform/x86: Add Uniwill laptop driver config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20250929/202509290415.uez00SgW-lkp@intel.com/config) compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250929/202509290415.uez00SgW-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202509290415.uez00SgW-lkp@intel.com/ All warnings (new ones prefixed by >>): >> drivers/platform/x86/uniwill/uniwill-acpi.c:1243:3: warning: label followed by a declaration is a C23 extension [-Wc23-extensions] 1243 | guard(mutex)(&data->battery_lock); | ^ include/linux/cleanup.h:401:2: note: expanded from macro 'guard' 401 | CLASS(_name, __UNIQUE_ID(guard)) | ^ include/linux/cleanup.h:290:2: note: expanded from macro 'CLASS' 290 | class_##_name##_t var __cleanup(class_##_name##_destructor) = \ | ^ <scratch space>:49:1: note: expanded from here 49 | class_mutex_t | ^ drivers/platform/x86/uniwill/uniwill-acpi.c:1250:3: warning: label followed by a declaration is a C23 extension [-Wc23-extensions] 1250 | guard(mutex)(&data->input_lock); | ^ include/linux/cleanup.h:401:2: note: expanded from macro 'guard' 401 | CLASS(_name, __UNIQUE_ID(guard)) | ^ include/linux/cleanup.h:290:2: note: expanded from macro 'CLASS' 290 | class_##_name##_t var __cleanup(class_##_name##_destructor) = \ | ^ <scratch space>:60:1: note: expanded from here 60 | class_mutex_t | ^ drivers/platform/x86/uniwill/uniwill-acpi.c:1249:2: error: cannot jump from switch statement to this case label 1249 | default: | ^ drivers/platform/x86/uniwill/uniwill-acpi.c:1243:3: note: jump bypasses initialization of variable with __attribute__((cleanup)) 1243 | guard(mutex)(&data->battery_lock); | ^ include/linux/cleanup.h:401:15: note: expanded from macro 'guard' 401 | CLASS(_name, __UNIQUE_ID(guard)) | ^ include/linux/compiler.h:166:29: note: expanded from macro '__UNIQUE_ID' 166 | #define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) | ^ include/linux/compiler_types.h:84:22: note: expanded from macro '__PASTE' 84 | #define __PASTE(a,b) ___PASTE(a,b) | ^ include/linux/compiler_types.h:83:23: note: expanded from macro '___PASTE' 83 | #define ___PASTE(a,b) a##b | ^ <scratch space>:47:1: note: expanded from here 47 | __UNIQUE_ID_guard1072 | ^ 2 warnings and 1 error generated. vim +1243 drivers/platform/x86/uniwill/uniwill-acpi.c 1235 1236 static int uniwill_notifier_call(struct notifier_block *nb, unsigned long action, void *dummy) 1237 { 1238 struct uniwill_data *data = container_of(nb, struct uniwill_data, nb); 1239 struct uniwill_battery_entry *entry; 1240 1241 switch (action) { 1242 case UNIWILL_OSD_BATTERY_ALERT: > 1243 guard(mutex)(&data->battery_lock); 1244 list_for_each_entry(entry, &data->batteries, head) { 1245 power_supply_changed(entry->battery); 1246 } 1247 1248 return NOTIFY_OK; 1249 default: 1250 guard(mutex)(&data->input_lock); 1251 sparse_keymap_report_event(data->input_device, action, 1, true); 1252 1253 return NOTIFY_OK; 1254 } 1255 } 1256 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v4 1/2] platform/x86: Add Uniwill laptop driver 2025-09-28 20:42 ` [PATCH v4 1/2] platform/x86: Add Uniwill laptop driver kernel test robot @ 2025-10-02 18:41 ` Armin Wolf 2025-10-02 23:36 ` Nathan Chancellor 0 siblings, 1 reply; 7+ messages in thread From: Armin Wolf @ 2025-10-02 18:41 UTC (permalink / raw) To: kernel test robot, ilpo.jarvinen, hdegoede, chumuzero, corbet, cs, wse, ggo Cc: llvm, oe-kbuild-all, linux-doc, linux-kernel, platform-driver-x86, rdunlap, alok.a.tiwari, linux-leds, lee, pobrn Am 28.09.25 um 22:42 schrieb kernel test robot: > Hi Armin, > > kernel test robot noticed the following build warnings: > > [auto build test WARNING on lwn/docs-next] > [also build test WARNING on linus/master v6.17-rc7 next-20250926] > [If your patch is applied to the wrong git tree, kindly drop us a note. > And when submitting patch, we suggest to use '--base' as documented in > https://git-scm.com/docs/git-format-patch#_base_tree_information] > > url: https://github.com/intel-lab-lkp/linux/commits/Armin-Wolf/platform-x86-Add-Uniwill-laptop-driver/20250928-093543 > base: git://git.lwn.net/linux.git docs-next > patch link: https://lore.kernel.org/r/20250928013253.10869-2-W_Armin%40gmx.de > patch subject: [PATCH v4 1/2] platform/x86: Add Uniwill laptop driver > config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20250929/202509290415.uez00SgW-lkp@intel.com/config) > compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261) > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250929/202509290415.uez00SgW-lkp@intel.com/reproduce) > > If you fix the issue in a separate patch/commit (i.e. not just a new version of > the same patch/commit), kindly add following tags > | Reported-by: kernel test robot <lkp@intel.com> > | Closes: https://lore.kernel.org/oe-kbuild-all/202509290415.uez00SgW-lkp@intel.com/ > > All warnings (new ones prefixed by >>): > >>> drivers/platform/x86/uniwill/uniwill-acpi.c:1243:3: warning: label followed by a declaration is a C23 extension [-Wc23-extensions] > 1243 | guard(mutex)(&data->battery_lock); > | ^ > include/linux/cleanup.h:401:2: note: expanded from macro 'guard' > 401 | CLASS(_name, __UNIQUE_ID(guard)) > | ^ > include/linux/cleanup.h:290:2: note: expanded from macro 'CLASS' > 290 | class_##_name##_t var __cleanup(class_##_name##_destructor) = \ > | ^ > <scratch space>:49:1: note: expanded from here > 49 | class_mutex_t > | ^ > drivers/platform/x86/uniwill/uniwill-acpi.c:1250:3: warning: label followed by a declaration is a C23 extension [-Wc23-extensions] > 1250 | guard(mutex)(&data->input_lock); > | ^ > include/linux/cleanup.h:401:2: note: expanded from macro 'guard' > 401 | CLASS(_name, __UNIQUE_ID(guard)) > | ^ > include/linux/cleanup.h:290:2: note: expanded from macro 'CLASS' > 290 | class_##_name##_t var __cleanup(class_##_name##_destructor) = \ > | ^ > <scratch space>:60:1: note: expanded from here > 60 | class_mutex_t > | ^ > drivers/platform/x86/uniwill/uniwill-acpi.c:1249:2: error: cannot jump from switch statement to this case label > 1249 | default: > | ^ > drivers/platform/x86/uniwill/uniwill-acpi.c:1243:3: note: jump bypasses initialization of variable with __attribute__((cleanup)) > 1243 | guard(mutex)(&data->battery_lock); > | ^ > include/linux/cleanup.h:401:15: note: expanded from macro 'guard' > 401 | CLASS(_name, __UNIQUE_ID(guard)) > | ^ > include/linux/compiler.h:166:29: note: expanded from macro '__UNIQUE_ID' > 166 | #define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) > | ^ > include/linux/compiler_types.h:84:22: note: expanded from macro '__PASTE' > 84 | #define __PASTE(a,b) ___PASTE(a,b) > | ^ > include/linux/compiler_types.h:83:23: note: expanded from macro '___PASTE' > 83 | #define ___PASTE(a,b) a##b > | ^ > <scratch space>:47:1: note: expanded from here > 47 | __UNIQUE_ID_guard1072 > | ^ > 2 warnings and 1 error generated. > Hi, i think this is a problem inside the clang compiler. I did not encounter this warning when build for x86-64 using gcc. Thanks, Armin Wolf > vim +1243 drivers/platform/x86/uniwill/uniwill-acpi.c > > 1235 > 1236 static int uniwill_notifier_call(struct notifier_block *nb, unsigned long action, void *dummy) > 1237 { > 1238 struct uniwill_data *data = container_of(nb, struct uniwill_data, nb); > 1239 struct uniwill_battery_entry *entry; > 1240 > 1241 switch (action) { > 1242 case UNIWILL_OSD_BATTERY_ALERT: >> 1243 guard(mutex)(&data->battery_lock); > 1244 list_for_each_entry(entry, &data->batteries, head) { > 1245 power_supply_changed(entry->battery); > 1246 } > 1247 > 1248 return NOTIFY_OK; > 1249 default: > 1250 guard(mutex)(&data->input_lock); > 1251 sparse_keymap_report_event(data->input_device, action, 1, true); > 1252 > 1253 return NOTIFY_OK; > 1254 } > 1255 } > 1256 > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v4 1/2] platform/x86: Add Uniwill laptop driver 2025-10-02 18:41 ` Armin Wolf @ 2025-10-02 23:36 ` Nathan Chancellor 2025-10-05 18:06 ` Armin Wolf 0 siblings, 1 reply; 7+ messages in thread From: Nathan Chancellor @ 2025-10-02 23:36 UTC (permalink / raw) To: Armin Wolf Cc: kernel test robot, ilpo.jarvinen, hdegoede, chumuzero, corbet, cs, wse, ggo, llvm, oe-kbuild-all, linux-doc, linux-kernel, platform-driver-x86, rdunlap, alok.a.tiwari, linux-leds, lee, pobrn Hi Armin, On Thu, Oct 02, 2025 at 08:41:19PM +0200, Armin Wolf wrote: > i think this is a problem inside the clang compiler. I did not encounter this warning when > build for x86-64 using gcc. Clang is actually saving you from yourself, it is a bug in GCC that it does not warn for this: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91951 > > vim +1243 drivers/platform/x86/uniwill/uniwill-acpi.c > > > > 1235 > > 1236 static int uniwill_notifier_call(struct notifier_block *nb, unsigned long action, void *dummy) > > 1237 { > > 1238 struct uniwill_data *data = container_of(nb, struct uniwill_data, nb); > > 1239 struct uniwill_battery_entry *entry; > > 1240 > > 1241 switch (action) { > > 1242 case UNIWILL_OSD_BATTERY_ALERT: > > > 1243 guard(mutex)(&data->battery_lock); mutex_unlock() will be called on &data->battery_lock even when the default case is taken, as demonstrated by the following test case. > > 1244 list_for_each_entry(entry, &data->batteries, head) { > > 1245 power_supply_changed(entry->battery); > > 1246 } > > 1247 > > 1248 return NOTIFY_OK; > > 1249 default: > > 1250 guard(mutex)(&data->input_lock); > > 1251 sparse_keymap_report_event(data->input_device, action, 1, true); > > 1252 > > 1253 return NOTIFY_OK; > > 1254 } > > 1255 } > > 1256 > > > $ cat test.c #include <stdio.h> void cleanup_1(int *a) { printf("+ %s(%p)\n", __func__, a); } void cleanup_2(int *a) { printf("+ %s(%p)\n", __func__, a); } void cleanup_3(int *a) { printf("+ %s(%p)\n", __func__, a); } void no_scopes(int a) { printf("%s(%d)\n", __func__, a); switch (a) { case 1: int case_1 __attribute__((cleanup(cleanup_1))); return; case 2: int case_2 __attribute__((cleanup(cleanup_2))); return; default: int case_default __attribute__((cleanup(cleanup_3))); return; } } void with_scopes(int a) { printf("%s(%d)\n", __func__, a); switch (a) { case 1: { int case_1 __attribute__((cleanup(cleanup_1))); return; } case 2: { int case_2 __attribute__((cleanup(cleanup_2))); return; } default: { int case_default __attribute__((cleanup(cleanup_3))); return; } } } int main(void) { no_scopes(1); printf("\n"); no_scopes(2); printf("\n"); no_scopes(3); printf("\n"); with_scopes(1); printf("\n"); with_scopes(2); printf("\n"); with_scopes(3); } $ gcc -O2 test.c $ ./a.out no_scopes(1) + cleanup_1(0x7ffea3450c0c) no_scopes(2) + cleanup_2(0x7ffea3450c10) + cleanup_1(0x7ffea3450c0c) no_scopes(3) + cleanup_3(0x7ffea3450c14) + cleanup_2(0x7ffea3450c10) + cleanup_1(0x7ffea3450c0c) with_scopes(1) + cleanup_1(0x7ffea3450c14) with_scopes(2) + cleanup_2(0x7ffea3450c14) with_scopes(3) + cleanup_3(0x7ffea3450c14) $ clang -O2 test.c test.c:12:9: warning: label followed by a declaration is a C23 extension [-Wc23-extensions] 12 | int case_1 __attribute__((cleanup(cleanup_1))); | ^ test.c:15:9: warning: label followed by a declaration is a C23 extension [-Wc23-extensions] 15 | int case_2 __attribute__((cleanup(cleanup_2))); | ^ test.c:18:9: warning: label followed by a declaration is a C23 extension [-Wc23-extensions] 18 | int case_default __attribute__((cleanup(cleanup_3))); | ^ test.c:17:5: error: cannot jump from switch statement to this case label 17 | default: | ^ test.c:15:13: note: jump bypasses initialization of variable with __attribute__((cleanup)) 15 | int case_2 __attribute__((cleanup(cleanup_2))); | ^ test.c:12:13: note: jump bypasses initialization of variable with __attribute__((cleanup)) 12 | int case_1 __attribute__((cleanup(cleanup_1))); | ^ test.c:14:5: error: cannot jump from switch statement to this case label 14 | case 2: | ^ test.c:12:13: note: jump bypasses initialization of variable with __attribute__((cleanup)) 12 | int case_1 __attribute__((cleanup(cleanup_1))); | ^ 3 warnings and 2 errors generated. https://godbolt.org/z/1Tx7Gj1xf I would add the scoping to the case labels or use scoped_guard() to avoid this, which would also avoid the instances of -Wc23-extensions. Cheers, Nathan ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v4 1/2] platform/x86: Add Uniwill laptop driver 2025-10-02 23:36 ` Nathan Chancellor @ 2025-10-05 18:06 ` Armin Wolf 2025-10-06 19:08 ` Nathan Chancellor 0 siblings, 1 reply; 7+ messages in thread From: Armin Wolf @ 2025-10-05 18:06 UTC (permalink / raw) To: Nathan Chancellor Cc: kernel test robot, ilpo.jarvinen, hdegoede, chumuzero, corbet, cs, wse, ggo, llvm, oe-kbuild-all, linux-doc, linux-kernel, platform-driver-x86, rdunlap, alok.a.tiwari, linux-leds, lee, pobrn Am 03.10.25 um 01:36 schrieb Nathan Chancellor: > Hi Armin, > > On Thu, Oct 02, 2025 at 08:41:19PM +0200, Armin Wolf wrote: >> i think this is a problem inside the clang compiler. I did not encounter this warning when >> build for x86-64 using gcc. > Clang is actually saving you from yourself, it is a bug in GCC that it > does not warn for this: > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91951 Oh my, i didn't expect that. Thank you for explaining this issue to to me, it seems that i still have much to learn. Thanks, Armin Wolf >>> vim +1243 drivers/platform/x86/uniwill/uniwill-acpi.c >>> >>> 1235 >>> 1236 static int uniwill_notifier_call(struct notifier_block *nb, unsigned long action, void *dummy) >>> 1237 { >>> 1238 struct uniwill_data *data = container_of(nb, struct uniwill_data, nb); >>> 1239 struct uniwill_battery_entry *entry; >>> 1240 >>> 1241 switch (action) { >>> 1242 case UNIWILL_OSD_BATTERY_ALERT: >>>> 1243 guard(mutex)(&data->battery_lock); > mutex_unlock() will be called on &data->battery_lock even when the > default case is taken, as demonstrated by the following test case. > >>> 1244 list_for_each_entry(entry, &data->batteries, head) { >>> 1245 power_supply_changed(entry->battery); >>> 1246 } >>> 1247 >>> 1248 return NOTIFY_OK; >>> 1249 default: >>> 1250 guard(mutex)(&data->input_lock); >>> 1251 sparse_keymap_report_event(data->input_device, action, 1, true); >>> 1252 >>> 1253 return NOTIFY_OK; >>> 1254 } >>> 1255 } >>> 1256 >>> > $ cat test.c > #include <stdio.h> > > void cleanup_1(int *a) { printf("+ %s(%p)\n", __func__, a); } > void cleanup_2(int *a) { printf("+ %s(%p)\n", __func__, a); } > void cleanup_3(int *a) { printf("+ %s(%p)\n", __func__, a); } > > void no_scopes(int a) > { > printf("%s(%d)\n", __func__, a); > switch (a) { > case 1: > int case_1 __attribute__((cleanup(cleanup_1))); > return; > case 2: > int case_2 __attribute__((cleanup(cleanup_2))); > return; > default: > int case_default __attribute__((cleanup(cleanup_3))); > return; > } > } > > void with_scopes(int a) > { > printf("%s(%d)\n", __func__, a); > switch (a) { > case 1: { > int case_1 __attribute__((cleanup(cleanup_1))); > return; > } > case 2: { > int case_2 __attribute__((cleanup(cleanup_2))); > return; > } > default: { > int case_default __attribute__((cleanup(cleanup_3))); > return; > } > } > } > > int main(void) > { > no_scopes(1); printf("\n"); > no_scopes(2); printf("\n"); > no_scopes(3); printf("\n"); > > with_scopes(1); printf("\n"); > with_scopes(2); printf("\n"); > with_scopes(3); > } > > $ gcc -O2 test.c > > $ ./a.out > no_scopes(1) > + cleanup_1(0x7ffea3450c0c) > > no_scopes(2) > + cleanup_2(0x7ffea3450c10) > + cleanup_1(0x7ffea3450c0c) > > no_scopes(3) > + cleanup_3(0x7ffea3450c14) > + cleanup_2(0x7ffea3450c10) > + cleanup_1(0x7ffea3450c0c) > > with_scopes(1) > + cleanup_1(0x7ffea3450c14) > > with_scopes(2) > + cleanup_2(0x7ffea3450c14) > > with_scopes(3) > + cleanup_3(0x7ffea3450c14) > > $ clang -O2 test.c > test.c:12:9: warning: label followed by a declaration is a C23 extension [-Wc23-extensions] > 12 | int case_1 __attribute__((cleanup(cleanup_1))); > | ^ > test.c:15:9: warning: label followed by a declaration is a C23 extension [-Wc23-extensions] > 15 | int case_2 __attribute__((cleanup(cleanup_2))); > | ^ > test.c:18:9: warning: label followed by a declaration is a C23 extension [-Wc23-extensions] > 18 | int case_default __attribute__((cleanup(cleanup_3))); > | ^ > test.c:17:5: error: cannot jump from switch statement to this case label > 17 | default: > | ^ > test.c:15:13: note: jump bypasses initialization of variable with __attribute__((cleanup)) > 15 | int case_2 __attribute__((cleanup(cleanup_2))); > | ^ > test.c:12:13: note: jump bypasses initialization of variable with __attribute__((cleanup)) > 12 | int case_1 __attribute__((cleanup(cleanup_1))); > | ^ > test.c:14:5: error: cannot jump from switch statement to this case label > 14 | case 2: > | ^ > test.c:12:13: note: jump bypasses initialization of variable with __attribute__((cleanup)) > 12 | int case_1 __attribute__((cleanup(cleanup_1))); > | ^ > 3 warnings and 2 errors generated. > > https://godbolt.org/z/1Tx7Gj1xf > > I would add the scoping to the case labels or use scoped_guard() to > avoid this, which would also avoid the instances of -Wc23-extensions. > > Cheers, > Nathan > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v4 1/2] platform/x86: Add Uniwill laptop driver 2025-10-05 18:06 ` Armin Wolf @ 2025-10-06 19:08 ` Nathan Chancellor 2025-10-17 17:19 ` Armin Wolf 0 siblings, 1 reply; 7+ messages in thread From: Nathan Chancellor @ 2025-10-06 19:08 UTC (permalink / raw) To: Armin Wolf Cc: kernel test robot, ilpo.jarvinen, hdegoede, chumuzero, corbet, cs, wse, ggo, llvm, oe-kbuild-all, linux-doc, linux-kernel, platform-driver-x86, rdunlap, alok.a.tiwari, linux-leds, lee, pobrn On Sun, Oct 05, 2025 at 08:06:57PM +0200, Armin Wolf wrote: > Am 03.10.25 um 01:36 schrieb Nathan Chancellor: > > > Hi Armin, > > > > On Thu, Oct 02, 2025 at 08:41:19PM +0200, Armin Wolf wrote: > > > i think this is a problem inside the clang compiler. I did not encounter this warning when > > > build for x86-64 using gcc. > > Clang is actually saving you from yourself, it is a bug in GCC that it > > does not warn for this: > > > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91951 > > Oh my, i didn't expect that. Thank you for explaining this issue to to me, > it seems that i still have much to learn. In your defense, it is quite a subtle interaction. It is probably worth throwing something in the documentation that explicitly calls this out, though I am not immediately sure of where... Cheers, Nathan ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v4 1/2] platform/x86: Add Uniwill laptop driver 2025-10-06 19:08 ` Nathan Chancellor @ 2025-10-17 17:19 ` Armin Wolf 0 siblings, 0 replies; 7+ messages in thread From: Armin Wolf @ 2025-10-17 17:19 UTC (permalink / raw) To: Nathan Chancellor Cc: kernel test robot, ilpo.jarvinen, hdegoede, chumuzero, corbet, cs, wse, ggo, llvm, oe-kbuild-all, linux-doc, linux-kernel, platform-driver-x86, rdunlap, alok.a.tiwari, linux-leds, lee, pobrn Am 06.10.25 um 21:08 schrieb Nathan Chancellor: > On Sun, Oct 05, 2025 at 08:06:57PM +0200, Armin Wolf wrote: >> Am 03.10.25 um 01:36 schrieb Nathan Chancellor: >> >>> Hi Armin, >>> >>> On Thu, Oct 02, 2025 at 08:41:19PM +0200, Armin Wolf wrote: >>>> i think this is a problem inside the clang compiler. I did not encounter this warning when >>>> build for x86-64 using gcc. >>> Clang is actually saving you from yourself, it is a bug in GCC that it >>> does not warn for this: >>> >>> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91951 >> Oh my, i didn't expect that. Thank you for explaining this issue to to me, >> it seems that i still have much to learn. > In your defense, it is quite a subtle interaction. It is probably worth > throwing something in the documentation that explicitly calls this out, > though I am not immediately sure of where... > > Cheers, > Nathan > Maybe Documentation/core-api/cleanup.rst would be a suitable place for warning people about this. Thanks, Armin Wolf ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v4 1/2] platform/x86: Add Uniwill laptop driver [not found] <20250928013253.10869-2-W_Armin@gmx.de> 2025-09-28 20:42 ` [PATCH v4 1/2] platform/x86: Add Uniwill laptop driver kernel test robot @ 2025-09-30 9:15 ` kernel test robot 1 sibling, 0 replies; 7+ messages in thread From: kernel test robot @ 2025-09-30 9:15 UTC (permalink / raw) To: Armin Wolf, ilpo.jarvinen, hdegoede, chumuzero, corbet, cs, wse, ggo Cc: llvm, oe-kbuild-all, linux-doc, linux-kernel, platform-driver-x86, rdunlap, alok.a.tiwari, linux-leds, lee, pobrn Hi Armin, kernel test robot noticed the following build errors: [auto build test ERROR on lwn/docs-next] [also build test ERROR on linus/master v6.17 next-20250929] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Armin-Wolf/platform-x86-Add-Uniwill-laptop-driver/20250928-093543 base: git://git.lwn.net/linux.git docs-next patch link: https://lore.kernel.org/r/20250928013253.10869-2-W_Armin%40gmx.de patch subject: [PATCH v4 1/2] platform/x86: Add Uniwill laptop driver config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20250930/202509301709.jGxwZmZX-lkp@intel.com/config) compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250930/202509301709.jGxwZmZX-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202509301709.jGxwZmZX-lkp@intel.com/ All errors (new ones prefixed by >>): drivers/platform/x86/uniwill/uniwill-acpi.c:1243:3: warning: label followed by a declaration is a C23 extension [-Wc23-extensions] 1243 | guard(mutex)(&data->battery_lock); | ^ include/linux/cleanup.h:401:2: note: expanded from macro 'guard' 401 | CLASS(_name, __UNIQUE_ID(guard)) | ^ include/linux/cleanup.h:290:2: note: expanded from macro 'CLASS' 290 | class_##_name##_t var __cleanup(class_##_name##_destructor) = \ | ^ <scratch space>:49:1: note: expanded from here 49 | class_mutex_t | ^ drivers/platform/x86/uniwill/uniwill-acpi.c:1250:3: warning: label followed by a declaration is a C23 extension [-Wc23-extensions] 1250 | guard(mutex)(&data->input_lock); | ^ include/linux/cleanup.h:401:2: note: expanded from macro 'guard' 401 | CLASS(_name, __UNIQUE_ID(guard)) | ^ include/linux/cleanup.h:290:2: note: expanded from macro 'CLASS' 290 | class_##_name##_t var __cleanup(class_##_name##_destructor) = \ | ^ <scratch space>:60:1: note: expanded from here 60 | class_mutex_t | ^ >> drivers/platform/x86/uniwill/uniwill-acpi.c:1249:2: error: cannot jump from switch statement to this case label 1249 | default: | ^ drivers/platform/x86/uniwill/uniwill-acpi.c:1243:3: note: jump bypasses initialization of variable with __attribute__((cleanup)) 1243 | guard(mutex)(&data->battery_lock); | ^ include/linux/cleanup.h:401:15: note: expanded from macro 'guard' 401 | CLASS(_name, __UNIQUE_ID(guard)) | ^ include/linux/compiler.h:166:29: note: expanded from macro '__UNIQUE_ID' 166 | #define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) | ^ include/linux/compiler_types.h:84:22: note: expanded from macro '__PASTE' 84 | #define __PASTE(a,b) ___PASTE(a,b) | ^ include/linux/compiler_types.h:83:23: note: expanded from macro '___PASTE' 83 | #define ___PASTE(a,b) a##b | ^ <scratch space>:47:1: note: expanded from here 47 | __UNIQUE_ID_guard1072 | ^ 2 warnings and 1 error generated. vim +1249 drivers/platform/x86/uniwill/uniwill-acpi.c 1235 1236 static int uniwill_notifier_call(struct notifier_block *nb, unsigned long action, void *dummy) 1237 { 1238 struct uniwill_data *data = container_of(nb, struct uniwill_data, nb); 1239 struct uniwill_battery_entry *entry; 1240 1241 switch (action) { 1242 case UNIWILL_OSD_BATTERY_ALERT: 1243 guard(mutex)(&data->battery_lock); 1244 list_for_each_entry(entry, &data->batteries, head) { 1245 power_supply_changed(entry->battery); 1246 } 1247 1248 return NOTIFY_OK; > 1249 default: 1250 guard(mutex)(&data->input_lock); 1251 sparse_keymap_report_event(data->input_device, action, 1, true); 1252 1253 return NOTIFY_OK; 1254 } 1255 } 1256 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-10-17 17:20 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20250928013253.10869-2-W_Armin@gmx.de>
2025-09-28 20:42 ` [PATCH v4 1/2] platform/x86: Add Uniwill laptop driver kernel test robot
2025-10-02 18:41 ` Armin Wolf
2025-10-02 23:36 ` Nathan Chancellor
2025-10-05 18:06 ` Armin Wolf
2025-10-06 19:08 ` Nathan Chancellor
2025-10-17 17:19 ` Armin Wolf
2025-09-30 9:15 ` kernel test robot
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox