Message ID | 1543216969-2227-1-git-send-email-yamada.masahiro@socionext.com |
---|---|
State | New |
Headers | show |
Series | [1/2] kconfig: fix reverse dependency with tristate if-conditional | expand |
Hi Masahiro,
I love your patch! Yet something to improve:
[auto build test ERROR on masahiroy/kconfig]
[also build test ERROR on v4.20-rc4]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Masahiro-Yamada/kconfig-fix-reverse-dependency-with-tristate-if-conditional/20181126-152716
base: https://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git kconfig
config: i386-randconfig-s1-201847 (attached as .config)
compiler: gcc-6 (Debian 6.4.0-9) 6.4.0 20171026
reproduce:
# save the attached .config to linux build tree
make ARCH=i386
All errors (new ones prefixed by >>):
drivers/input//mouse/synaptics.c: In function 'synaptics_create_intertouch':
>> drivers/input//mouse/synaptics.c:1754:9: error: implicit declaration of function 'psmouse_smbus_init' [-Werror=implicit-function-declaration]
return psmouse_smbus_init(psmouse, &intertouch_board,
^~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +/psmouse_smbus_init +1754 drivers/input//mouse/synaptics.c
e839ffab Benjamin Tissoires 2017-03-02 1728
e839ffab Benjamin Tissoires 2017-03-02 1729 static int synaptics_create_intertouch(struct psmouse *psmouse,
e839ffab Benjamin Tissoires 2017-03-02 1730 struct synaptics_device_info *info,
e839ffab Benjamin Tissoires 2017-03-02 1731 bool leave_breadcrumbs)
e839ffab Benjamin Tissoires 2017-03-02 1732 {
e839ffab Benjamin Tissoires 2017-03-02 1733 bool topbuttonpad =
e839ffab Benjamin Tissoires 2017-03-02 1734 psmouse_matches_pnp_id(psmouse, topbuttonpad_pnp_ids) &&
e839ffab Benjamin Tissoires 2017-03-02 1735 !SYN_CAP_EXT_BUTTONS_STICK(info->ext_cap_10);
e839ffab Benjamin Tissoires 2017-03-02 1736 const struct rmi_device_platform_data pdata = {
e839ffab Benjamin Tissoires 2017-03-02 1737 .sensor_pdata = {
e839ffab Benjamin Tissoires 2017-03-02 1738 .sensor_type = rmi_sensor_touchpad,
e839ffab Benjamin Tissoires 2017-03-02 1739 .axis_align.flip_y = true,
2b30297d Andrew Duggan 2017-10-09 1740 .kernel_tracking = false,
e839ffab Benjamin Tissoires 2017-03-02 1741 .topbuttonpad = topbuttonpad,
e839ffab Benjamin Tissoires 2017-03-02 1742 },
e839ffab Benjamin Tissoires 2017-03-02 1743 .f30_data = {
e839ffab Benjamin Tissoires 2017-03-02 1744 .buttonpad = SYN_CAP_CLICKPAD(info->ext_cap_0c),
e839ffab Benjamin Tissoires 2017-03-02 1745 .trackstick_buttons =
e839ffab Benjamin Tissoires 2017-03-02 1746 !!SYN_CAP_EXT_BUTTONS_STICK(info->ext_cap_10),
e839ffab Benjamin Tissoires 2017-03-02 1747 },
e839ffab Benjamin Tissoires 2017-03-02 1748 };
e839ffab Benjamin Tissoires 2017-03-02 1749 const struct i2c_board_info intertouch_board = {
e839ffab Benjamin Tissoires 2017-03-02 1750 I2C_BOARD_INFO("rmi4_smbus", 0x2c),
e839ffab Benjamin Tissoires 2017-03-02 1751 .flags = I2C_CLIENT_HOST_NOTIFY,
e839ffab Benjamin Tissoires 2017-03-02 1752 };
e839ffab Benjamin Tissoires 2017-03-02 1753
e839ffab Benjamin Tissoires 2017-03-02 @1754 return psmouse_smbus_init(psmouse, &intertouch_board,
bf232e46 Benjamin Tissoires 2018-05-22 1755 &pdata, sizeof(pdata), true,
e839ffab Benjamin Tissoires 2017-03-02 1756 leave_breadcrumbs);
e839ffab Benjamin Tissoires 2017-03-02 1757 }
e839ffab Benjamin Tissoires 2017-03-02 1758
:::::: The code at line 1754 was first introduced by commit
:::::: e839ffab028981ac77f650faf8c84f16e1719738 Input: synaptics - add support for Intertouch devices
:::::: TO: Benjamin Tissoires <benjamin.tissoires@redhat.com>
:::::: CC: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
Hi Masahiro, I love your patch! Yet something to improve: [auto build test ERROR on masahiroy/kconfig] [also build test ERROR on v4.20-rc4 next-20181123] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Masahiro-Yamada/kconfig-fix-reverse-dependency-with-tristate-if-conditional/20181126-152716 base: https://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git kconfig config: i386-randconfig-s3-201847 (attached as .config) compiler: gcc-6 (Debian 6.4.0-9) 6.4.0 20171026 reproduce: # save the attached .config to linux build tree make ARCH=i386 All errors (new ones prefixed by >>): arch/x86/kernel/dumpstack.o: In function `touch_nmi_watchdog': >> include/linux/nmi.h:135: undefined reference to `touch_softlockup_watchdog' arch/x86/kernel/nmi.o: In function `touch_nmi_watchdog': >> include/linux/nmi.h:135: undefined reference to `touch_softlockup_watchdog' arch/x86/kernel/kvm.o: In function `kvm_guest_init': >> arch/x86/kernel/kvm.c:664: undefined reference to `hardlockup_detector_disable' arch/x86/kernel/pvclock.o: In function `pvclock_touch_watchdogs': >> arch/x86/kernel/pvclock.c:52: undefined reference to `touch_softlockup_watchdog_sync' kernel/panic.o: In function `touch_nmi_watchdog': >> include/linux/nmi.h:135: undefined reference to `touch_softlockup_watchdog' >> include/linux/nmi.h:135: undefined reference to `touch_softlockup_watchdog' >> include/linux/nmi.h:135: undefined reference to `touch_softlockup_watchdog' kernel/panic.o: In function `panic': >> kernel/panic.c:300: undefined reference to `touch_softlockup_watchdog' kernel/workqueue.o: In function `touch_nmi_watchdog': >> include/linux/nmi.h:135: undefined reference to `touch_softlockup_watchdog' kernel/workqueue.o:include/linux/nmi.h:135: more undefined references to `touch_softlockup_watchdog' follow kernel/sched/core.o: In function `show_state_filter': >> kernel/sched/core.c:5341: undefined reference to `touch_all_softlockup_watchdogs' kernel/power/hibernate.o: In function `resume_target_kernel': >> kernel/power/hibernate.c:480: undefined reference to `touch_softlockup_watchdog' kernel/power/snapshot.o: In function `rtree_next_node': >> kernel/power/snapshot.c:847: undefined reference to `touch_softlockup_watchdog' kernel/printk/printk.o: In function `touch_nmi_watchdog': >> include/linux/nmi.h:135: undefined reference to `touch_softlockup_watchdog' kernel/time/timekeeping.o: In function `timekeeping_resume': >> kernel/time/timekeeping.c:1731: undefined reference to `touch_softlockup_watchdog' kernel/time/timer_list.o: In function `touch_nmi_watchdog': >> include/linux/nmi.h:135: undefined reference to `touch_softlockup_watchdog' kernel/time/timer_list.o:include/linux/nmi.h:135: more undefined references to `touch_softlockup_watchdog' follow drivers/tty/serial/earlycon.o: In function `parse_options': >> drivers/tty/serial/earlycon.c:94: undefined reference to `uart_parse_earlycon' drivers/tty/serial/8250/8250_core.o: In function `univ8250_console_match': >> drivers/tty/serial/8250/8250_core.c:640: undefined reference to `uart_parse_earlycon' drivers/tty/serial/8250/8250_core.o: In function `serial8250_suspend': >> drivers/tty/serial/8250/8250_core.c:865: undefined reference to `uart_suspend_port' drivers/tty/serial/8250/8250_core.o: In function `serial8250_find_match_or_unused': >> drivers/tty/serial/8250/8250_core.c:916: undefined reference to `uart_match_port' drivers/tty/serial/8250/8250_core.o: In function `serial8250_register_8250_port': >> drivers/tty/serial/8250/8250_core.c:971: undefined reference to `uart_remove_one_port' vim +135 include/linux/nmi.h 6592ad2f Thomas Gleixner 2017-09-12 124 ^1da177e Linus Torvalds 2005-04-16 125 /** ^1da177e Linus Torvalds 2005-04-16 126 * touch_nmi_watchdog - restart NMI watchdog timeout. ^1da177e Linus Torvalds 2005-04-16 127 * ^1da177e Linus Torvalds 2005-04-16 128 * If the architecture supports the NMI watchdog, touch_nmi_watchdog() ^1da177e Linus Torvalds 2005-04-16 129 * may be used to reset the timeout - for code which intentionally ^1da177e Linus Torvalds 2005-04-16 130 * disables interrupts for a long time. This call is stateless. ^1da177e Linus Torvalds 2005-04-16 131 */ 5d0e600d Ingo Molnar 2007-02-13 132 static inline void touch_nmi_watchdog(void) 5d0e600d Ingo Molnar 2007-02-13 133 { f2e0cff8 Nicholas Piggin 2017-07-12 134 arch_touch_nmi_watchdog(); 5d0e600d Ingo Molnar 2007-02-13 @135 touch_softlockup_watchdog(); 5d0e600d Ingo Molnar 2007-02-13 136 } 6e7458a6 Ulrich Obergfell 2014-10-13 137 :::::: The code at line 135 was first introduced by commit :::::: 5d0e600d903caa09e790824cc5812f0d97113b23 [PATCH] x86: fix laptop bootup hang in init_acpi() :::::: TO: Ingo Molnar <mingo@elte.hu> :::::: CC: Andi Kleen <andi@basil.nowhere.org> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
On Mon, Nov 26, 2018 at 5:17 PM kbuild test robot <lkp@intel.com> wrote: > > Hi Masahiro, > > I love your patch! Yet something to improve: > > [auto build test ERROR on masahiroy/kconfig] > [also build test ERROR on v4.20-rc4] > [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] > > url: https://github.com/0day-ci/linux/commits/Masahiro-Yamada/kconfig-fix-reverse-dependency-with-tristate-if-conditional/20181126-152716 > base: https://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git kconfig > config: i386-randconfig-s1-201847 (attached as .config) > compiler: gcc-6 (Debian 6.4.0-9) 6.4.0 20171026 > reproduce: > # save the attached .config to linux build tree > make ARCH=i386 > > All errors (new ones prefixed by >>): OK, this is not so easy to fix as I expected. UML is not defined at all for i386, 'UML != n' is evaluated to 'y'. I need to think about how to fix this. > drivers/input//mouse/synaptics.c: In function 'synaptics_create_intertouch': > >> drivers/input//mouse/synaptics.c:1754:9: error: implicit declaration of function 'psmouse_smbus_init' [-Werror=implicit-function-declaration] > return psmouse_smbus_init(psmouse, &intertouch_board, > ^~~~~~~~~~~~~~~~~~ > cc1: some warnings being treated as errors > > vim +/psmouse_smbus_init +1754 drivers/input//mouse/synaptics.c > > e839ffab Benjamin Tissoires 2017-03-02 1728 > e839ffab Benjamin Tissoires 2017-03-02 1729 static int synaptics_create_intertouch(struct psmouse *psmouse, > e839ffab Benjamin Tissoires 2017-03-02 1730 struct synaptics_device_info *info, > e839ffab Benjamin Tissoires 2017-03-02 1731 bool leave_breadcrumbs) > e839ffab Benjamin Tissoires 2017-03-02 1732 { > e839ffab Benjamin Tissoires 2017-03-02 1733 bool topbuttonpad = > e839ffab Benjamin Tissoires 2017-03-02 1734 psmouse_matches_pnp_id(psmouse, topbuttonpad_pnp_ids) && > e839ffab Benjamin Tissoires 2017-03-02 1735 !SYN_CAP_EXT_BUTTONS_STICK(info->ext_cap_10); > e839ffab Benjamin Tissoires 2017-03-02 1736 const struct rmi_device_platform_data pdata = { > e839ffab Benjamin Tissoires 2017-03-02 1737 .sensor_pdata = { > e839ffab Benjamin Tissoires 2017-03-02 1738 .sensor_type = rmi_sensor_touchpad, > e839ffab Benjamin Tissoires 2017-03-02 1739 .axis_align.flip_y = true, > 2b30297d Andrew Duggan 2017-10-09 1740 .kernel_tracking = false, > e839ffab Benjamin Tissoires 2017-03-02 1741 .topbuttonpad = topbuttonpad, > e839ffab Benjamin Tissoires 2017-03-02 1742 }, > e839ffab Benjamin Tissoires 2017-03-02 1743 .f30_data = { > e839ffab Benjamin Tissoires 2017-03-02 1744 .buttonpad = SYN_CAP_CLICKPAD(info->ext_cap_0c), > e839ffab Benjamin Tissoires 2017-03-02 1745 .trackstick_buttons = > e839ffab Benjamin Tissoires 2017-03-02 1746 !!SYN_CAP_EXT_BUTTONS_STICK(info->ext_cap_10), > e839ffab Benjamin Tissoires 2017-03-02 1747 }, > e839ffab Benjamin Tissoires 2017-03-02 1748 }; > e839ffab Benjamin Tissoires 2017-03-02 1749 const struct i2c_board_info intertouch_board = { > e839ffab Benjamin Tissoires 2017-03-02 1750 I2C_BOARD_INFO("rmi4_smbus", 0x2c), > e839ffab Benjamin Tissoires 2017-03-02 1751 .flags = I2C_CLIENT_HOST_NOTIFY, > e839ffab Benjamin Tissoires 2017-03-02 1752 }; > e839ffab Benjamin Tissoires 2017-03-02 1753 > e839ffab Benjamin Tissoires 2017-03-02 @1754 return psmouse_smbus_init(psmouse, &intertouch_board, > bf232e46 Benjamin Tissoires 2018-05-22 1755 &pdata, sizeof(pdata), true, > e839ffab Benjamin Tissoires 2017-03-02 1756 leave_breadcrumbs); > e839ffab Benjamin Tissoires 2017-03-02 1757 } > e839ffab Benjamin Tissoires 2017-03-02 1758 > > :::::: The code at line 1754 was first introduced by commit > :::::: e839ffab028981ac77f650faf8c84f16e1719738 Input: synaptics - add support for Intertouch devices > > :::::: TO: Benjamin Tissoires <benjamin.tissoires@redhat.com> > :::::: CC: Dmitry Torokhov <dmitry.torokhov@gmail.com> > > --- > 0-DAY kernel test infrastructure Open Source Technology Center > https://lists.01.org/pipermail/kbuild-all Intel Corporation -- Best Regards Masahiro Yamada
diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c index 4cf15d4..2b18833 100644 --- a/scripts/kconfig/menu.c +++ b/scripts/kconfig/menu.c @@ -401,11 +401,13 @@ void menu_finalize(struct menu *parent) if (prop->type == P_SELECT) { struct symbol *es = prop_get_symbol(prop); es->rev_dep.expr = expr_alloc_or(es->rev_dep.expr, - expr_alloc_and(expr_alloc_symbol(menu->sym), expr_copy(dep))); + expr_alloc_and(expr_alloc_symbol(menu->sym), + expr_trans_compare(dep, E_UNEQUAL, &symbol_no))); } else if (prop->type == P_IMPLY) { struct symbol *es = prop_get_symbol(prop); es->implied.expr = expr_alloc_or(es->implied.expr, - expr_alloc_and(expr_alloc_symbol(menu->sym), expr_copy(dep))); + expr_alloc_and(expr_alloc_symbol(menu->sym), + expr_trans_compare(dep, E_UNEQUAL, &symbol_no))); } } }
A Kconfig property can have an optional if-expression, which describes its visibility. The property is visible when the if-expression part is evaluated to 'y' or 'm'. The 'select' and 'imply' properties are internally converted to reverse dependencies, but they are wrongly converted if they have a tristate if-expression. Example: config A tristate "a" config B tristate "b" select A if C config C tristate "c" Currently, the reverse dependency of 'A' results in 'B && C'. It is incorrect because the combination of B=y and C=m allows 'A' to become 'm', while its lower limit must be 'y'. The reverse dependency should be 'B && C != n'. Randy Dunlap reported that people are trying to fix an individual Kconfig file [1], and I also found another example in the past, commit 9d9c98e89ee2 ("pcmcia: fix yenta dependency on PCCARD_NONSTATIC") but I suspect this is a bug of Kconfig itself. [1] https://www.spinics.net/lists/netfilter-devel/msg56985.html Reported-by: Taehee Yoo <ap420073@gmail.com> Reported-by: Randy Dunlap <rdunlap@infradead.org> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> --- scripts/kconfig/menu.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) -- 2.7.4