668 Commits

Author SHA1 Message Date
Michael Bestas
dfe6bc2159 Merge tag 'v4.4.269' into android-msm-wahoo-4.4
This is the 4.4.269 stable release

# gpg: Signature made Sat May 22 11:39:12 2021 EEST
# gpg:                using RSA key 647F28654894E3BD457199BE38DBBDC86092693E
# gpg: Good signature from "Greg Kroah-Hartman <gregkh@kernel.org>" [full]
# gpg: gregkh@kernel.org: Verified 20 signatures in the past 2 hours.  Encrypted
#      0 messages.

# By Colin Ian King (11) and others
# Via Greg Kroah-Hartman
* tag 'v4.4.269':
  Linux 4.4.269
  iio: tsl2583: Fix division by a zero lux_val
  xhci: Do not use GFP_KERNEL in (potentially) atomic context
  ipv6: remove extra dev_hold() for fallback tunnels
  ip6_tunnel: sit: proper dev_{hold|put} in ndo_[un]init methods
  sit: proper dev_{hold|put} in ndo_[un]init methods
  ALSA: hda: generic: change the DAC ctl name for LO+SPK or LO+HP
  um: Mark all kernel symbols as local
  ACPI / hotplug / PCI: Fix reference count leak in enable_slot()
  isdn: capi: fix mismatched prototypes
  cxgb4: Fix the -Wmisleading-indentation warning
  usb: sl811-hcd: improve misleading indentation
  kgdb: fix gcc-11 warning on indentation
  x86/msr: Fix wr/rdmsr_safe_regs_on_cpu() prototypes
  kobject_uevent: remove warning in init_uevent_argv()
  dm ioctl: fix out of bounds array access when no devices
  thermal/core/fair share: Lock the thermal zone while looping over instances
  FDDI: defxx: Make MMIO the configuration default except for EISA
  KVM: x86: Cancel pvclock_gtod_work on module removal
  usb: core: hub: fix race condition about TRSMRCY of resume
  usb: dwc2: Fix gadget DMA unmap direction
  usb: xhci: Increase timeout for HC halt
  usb: fotg210-hcd: Fix an error message
  squashfs: fix divide error in calculate_skip()
  powerpc/64s: Fix crashes when toggling entry flush barrier
  ARC: entry: fix off-by-one error in syscall number validation
  kernel: kexec_file: fix error return code of kexec_calculate_store_digests()
  ksm: fix potential missing rmap_item for stable_node
  drm/radeon: Fix off-by-one power_state index heap overwrite
  sctp: fix a SCTP_MIB_CURRESTAB leak in sctp_sf_do_dupcook_b
  NFSv4.2 fix handling of sr_eof in SEEK's reply
  pNFS/flexfiles: fix incorrect size check in decode_nfs_fh()
  NFS: Deal correctly with attribute generation counter overflow
  PCI: Release OF node in pci_scan_device()'s error path
  ASoC: rt286: Make RT286_SET_GPIO_* readable and writable
  powerpc/iommu: Annotate nested lock for lockdep
  wl3501_cs: Fix out-of-bounds warnings in wl3501_mgmt_join
  wl3501_cs: Fix out-of-bounds warnings in wl3501_send_pkt
  ASoC: rt286: Generalize support for ALC3263 codec
  sctp: Fix out-of-bounds warning in sctp_process_asconf_param()
  kconfig: nconf: stop endless search loops
  selftests: Set CC to clang in lib.mk if LLVM is set
  cuse: prevent clone
  mac80211: clear the beacon's CRC after channel switch
  ip6_vti: proper dev_{hold|put} in ndo_[un]init methods
  Bluetooth: initialize skb_queue_head at l2cap_chan_create()
  Bluetooth: Set CONF_NOT_COMPLETE as l2cap_chan default
  ALSA: rme9652: don't disable if not enabled
  ALSA: hdspm: don't disable if not enabled
  ALSA: hdsp: don't disable if not enabled
  net: stmmac: Set FIFO sizes for ipq806x
  tipc: convert dest node's address to network order
  fs: dlm: fix debugfs dump
  sctp: delay auto_asconf init until binding the first addr
  Revert "net/sctp: fix race condition in sctp_destroy_sock"
  kfifo: fix ternary sign extension bugs
  net:nfc:digital: Fix a double free in digital_tg_recv_dep_req
  powerpc/52xx: Fix an invalid ASM expression ('addi' used instead of 'add')
  ath9k: Fix error check in ath9k_hw_read_revisions() for PCI devices
  net: davinci_emac: Fix incorrect masking of tx and rx error channel
  vsock/vmci: log once the failed queue pair allocation
  mwl8k: Fix a double Free in mwl8k_probe_hw
  i2c: sh7760: fix IRQ error path
  powerpc/pseries: extract host bridge from pci_bus prior to bus removal
  i2c: sh7760: add IRQ check
  i2c: jz4780: add IRQ check
  i2c: cadence: add IRQ check
  net: thunderx: Fix unintentional sign extension issue
  mt7601u: fix always true expression
  mac80211: bail out if cipher schemes are invalid
  powerpc: iommu: fix build when neither PCI or IBMVIO is set
  ALSA: usb-audio: Add error checks for usb_driver_claim_interface() calls
  nfc: pn533: prevent potential memory corruption
  ALSA: core: remove redundant spin_lock pair in snd_card_disconnect
  powerpc/prom: Mark identical_pvr_fixup as __init
  net: lapbether: Prevent racing when checking whether the netif is running
  HID: plantronics: Workaround for double volume key presses
  x86/events/amd/iommu: Fix sysfs type mismatch
  HSI: core: fix resource leaks in hsi_add_client_from_dt()
  scsi: sni_53c710: Add IRQ check
  scsi: sun3x_esp: Add IRQ check
  scsi: jazz_esp: Add IRQ check
  media: dvb-usb-remote: fix dvb_usb_nec_rc_key_to_event type mismatch
  scsi: fcoe: Fix mismatched fcoe_wwn_from_mac declaration
  ata: libahci_platform: fix IRQ check
  sata_mv: add IRQ checks
  pata_ipx4xx_cf: fix IRQ check
  pata_arasan_cf: fix IRQ check
  media: m88rs6000t: avoid potential out-of-bounds reads on arrays
  media: omap4iss: return error code when omap4iss_get() failed
  media: vivid: fix assignment of dev->fbuf_out_flags
  ttyprintk: Add TTY hangup callback.
  tty: fix return value for unsupported ioctls
  USB: cdc-acm: fix unprivileged TIOCCSERIAL
  usb: gadget: r8a66597: Add missing null check on return from platform_get_resource
  crypto: qat - Fix a double free in adf_create_ring
  staging: rtl8192u: Fix potential infinite loop
  crypto: qat - fix error path in adf_isr_resource_alloc()
  mtd: require write permissions for locking and badblock ioctls
  fotg210-udc: Complete OUT requests on short packets
  fotg210-udc: Don't DMA more than the buffer can take
  fotg210-udc: Mask GRP2 interrupts we don't handle
  fotg210-udc: Remove a dubious condition leading to fotg210_done
  fotg210-udc: Fix EP0 IN requests bigger than two packets
  fotg210-udc: Fix DMA on EP0 for length > max packet size
  crypto: qat - don't release uninitialized resources
  usb: gadget: pch_udc: Check for DMA mapping error
  usb: gadget: pch_udc: Check if driver is present before calling ->setup()
  usb: gadget: pch_udc: Replace cpu_to_le32() by lower_32_bits()
  ARM: dts: exynos: correct PMIC interrupt trigger level on Snow
  ARM: dts: exynos: correct PMIC interrupt trigger level on SMDK5250
  memory: gpmc: fix out of bounds read and dereference on gpmc_cs[]
  usb: gadget: pch_udc: Revert d3cb25a121 completely
  KVM: s390: split kvm_s390_real_to_abs
  ALSA: hda/realtek: Remove redundant entry for ALC861 Haier/Uniwill devices
  ALSA: hda/realtek: Re-order ALC269 Sony quirk table entries
  ALSA: hda/realtek: Re-order ALC882 Sony quirk table entries
  ALSA: hda/realtek: Re-order ALC882 Acer quirk table entries
  drm/radeon: fix copy of uninitialized variable back to userspace
  cfg80211: scan: drop entry from hidden_list on overflow
  ipw2x00: potential buffer overflow in libipw_wx_set_encodeext()
  md: md_open returns -EBUSY when entering racing area
  md: factor out a mddev_find_locked helper from mddev_find
  tracing: Restructure trace_clock_global() to never block
  tracing: Map all PIDs to command lines
  tracing: Treat recording comm for idle task as a success
  tracing: Use strlcpy() instead of strcpy() in __trace_find_cmdline()
  misc: vmw_vmci: explicitly initialize vmci_datagram payload
  misc: vmw_vmci: explicitly initialize vmci_notify_bm_set_msg struct
  misc: lis3lv02d: Fix false-positive WARN on various HP models
  FDDI: defxx: Bail out gracefully with unassigned PCI resource for CSR
  net/nfc: fix use-after-free llcp_sock_bind/connect
  hsr: use netdev_err() instead of WARN_ONCE()
  Bluetooth: verify AMP hci_chan before amp_destroy
  dm space map common: fix division bug in sm_ll_find_free_block()
  dm persistent data: packed struct should have an aligned() attribute too
  usb: gadget/function/f_fs string table fix for multiple languages
  usb: gadget: dummy_hcd: fix gpf in gadget_setup
  ext4: fix error code in ext4_commit_super
  ext4: fix check to prevent false positive report of incorrect used inodes
  ftrace: Handle commands when closing set_ftrace_filter file
  jffs2: check the validity of dstlen in jffs2_zlib_compress()
  powerpc: fix EDEADLOCK redefinition error in uapi/asm/errno.h
  powerpc/eeh: Fix EEH handling for hugepages in ioremap space.
  jffs2: Fix kasan slab-out-of-bounds problem
  openvswitch: fix stack OOB read while fragmenting IPv4 packets
  arm64/vdso: Discard .note.gnu.property sections in vDSO
  ALSA: sb: Fix two use after free in snd_sb_qsound_build
  ALSA: emu8000: Fix a use after free in snd_emu8000_create_mixer
  scsi: libfc: Fix a format specifier
  scsi: lpfc: Fix crash when a REG_RPI mailbox fails triggering a LOGO response
  drm/amdgpu: fix NULL pointer dereference
  drm/msm/mdp5: Configure PP_SYNC_HEIGHT to double the vtotal
  media: gscpa/stv06xx: fix memory leak
  media: dvb-usb: fix memory leak in dvb_usb_adapter_init
  media: i2c: adv7511-v4l2: fix possible use-after-free in adv7511_remove()
  power: supply: s3c_adc_battery: fix possible use-after-free in s3c_adc_bat_remove()
  power: supply: generic-adc-battery: fix possible use-after-free in gab_remove()
  clk: socfpga: arria10: Fix memory leak of socfpga_clk on error return
  media: em28xx: fix memory leak
  media: gspca/sq905.c: fix uninitialized variable
  media: media/saa7164: fix saa7164_encoder_register() memory leak bugs
  media: ite-cir: check for receive overflow
  scsi: target: pscsi: Fix warning in pscsi_complete_cmd()
  btrfs: convert logic BUG_ON()'s in replace_path to ASSERT()'s
  phy: phy-twl4030-usb: Fix possible use-after-free in twl4030_usb_remove()
  intel_th: Consistency and off-by-one fix
  spi: omap-100k: Fix reference leak to master
  spi: dln2: Fix reference leak to master
  x86/build: Propagate $(CLANG_FLAGS) to $(REALMODE_FLAGS)
  PCI: PM: Do not read power state in pci_enable_device_flags()
  usb: gadget: uvc: add bInterval checking for HS mode
  staging: wimax/i2400m: fix byte-order issue
  fbdev: zero-fill colormap in fbcmap.c
  mmc: core: Set read only for SD cards with permanent write protect bit
  mmc: core: Do a power cycle when the CMD11 fails
  ecryptfs: fix kernel panic with null dev_name
  ACPI: custom_method: fix a possible memory leak
  ACPI: custom_method: fix potential use-after-free issue
  s390/disassembler: increase ebpf disasm buffer size
  platform/x86: thinkpad_acpi: Correct thermal sensor allocation
  USB: Add reset-resume quirk for WD19's Realtek Hub
  USB: Add LPM quirk for Lenovo ThinkPad USB-C Dock Gen2 Ethernet
  ALSA: usb-audio: Add MIDI quirk for Vox ToneLab EX
  iwlwifi: Fix softirq/hardirq disabling in iwl_pcie_enqueue_hcmd()
  net: usb: ax88179_178a: initialize local variables before use
  timerfd: Reject ALARM timerfds without CAP_WAKE_ALARM

 Conflicts:
	drivers/mmc/core/core.c
	drivers/usb/core/hub.c
	kernel/trace/trace.c

Change-Id: If654a926df1053a3dd1334679898ecc983161565
2021-07-24 19:27:53 +03:00
Mihai Moldovan
4d688ff974 kconfig: nconf: stop endless search loops
[ Upstream commit 8c94b430b9f6213dec84e309bb480a71778c4213 ]

If the user selects the very first entry in a page and performs a
search-up operation, or selects the very last entry in a page and
performs a search-down operation that will not succeed (e.g., via
[/]asdfzzz[Up Arrow]), nconf will never terminate searching the page.

The reason is that in this case, the starting point will be set to -1
or n, which is then translated into (n - 1) (i.e., the last entry of
the page) or 0 (i.e., the first entry of the page) and finally the
search begins. This continues to work fine until the index reaches 0 or
(n - 1), at which point it will be decremented to -1 or incremented to
n, but not checked against the starting point right away. Instead, it's
wrapped around to the bottom or top again, after which the starting
point check occurs... and naturally fails.

My original implementation added another check for -1 before wrapping
the running index variable around, but Masahiro Yamada pointed out that
the actual issue is that the comparison point (starting point) exceeds
bounds (i.e., the [0,n-1] interval) in the first place and that,
instead, the starting point should be fixed.

This has the welcome side-effect of also fixing the case where the
starting point was n while searching down, which also lead to an
infinite loop.

OTOH, this code is now essentially all his work.

Amazingly, nobody seems to have been hit by this for 11 years - or at
the very least nobody bothered to debug and fix this.

Signed-off-by: Mihai Moldovan <ionic@ionic.de>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-05-22 10:38:27 +02:00
Nick Desaulniers
0e83ac367c kconfig: fix -Wmisleading-indentation
Fixes:
scripts/kconfig/symbol.c:1119:4: warning: misleading indentation;
statement is not part of the previous 'if' [-Wmisleading-indentation]
fprintf(stderr, "For a resolution refer to Documentation/kbuild/kconfig-language.txt\n");
^
scripts/kconfig/symbol.c:1116:3: note: previous statement is here
if (stack->sym == last_sym)
^

This code has been significantly rewritten upstream, it's not worth
backporting IMO.

Bug: 155426751
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Change-Id: Ie3bf9ac441e039fb80617e847524abf22a340595
2020-05-15 15:45:39 -07:00
Masahiro Yamada
cc37c79839 kconfig: fix broken dependency in randconfig-generated .config
[ Upstream commit c8fb7d7e48d11520ad24808cfce7afb7b9c9f798 ]

Running randconfig on arm64 using KCONFIG_SEED=0x40C5E904 (e.g. on v5.5)
produces the .config with CONFIG_EFI=y and CONFIG_CPU_BIG_ENDIAN=y,
which does not meet the !CONFIG_CPU_BIG_ENDIAN dependency.

This is because the user choice for CONFIG_CPU_LITTLE_ENDIAN vs
CONFIG_CPU_BIG_ENDIAN is set by randomize_choice_values() after the
value of CONFIG_EFI is calculated.

When this happens, the has_changed flag should be set.

Currently, it takes the result from the last iteration. It should
accumulate all the results of the loop.

Fixes: 3b9a19e089 ("kconfig: loop as long as we changed some symbols in randconfig")
Reported-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-02-28 15:38:56 +01:00
Thomas Hebb
26cee8d70e kconfig: don't crash on NULL expressions in expr_eq()
[ Upstream commit 272a72103012862e3a24ea06635253ead0b6e808 ]

NULL expressions are taken to always be true, as implemented by the
expr_is_yes() macro and by several other functions in expr.c. As such,
they ought to be valid inputs to expr_eq(), which compares two
expressions.

Signed-off-by: Thomas Hebb <tommyhebb@gmail.com>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-01-12 11:22:50 +01:00
Changbin Du
e0d9031feb kconfig/[mn]conf: handle backspace (^H) key
[ Upstream commit 9c38f1f044080392603c497ecca4d7d09876ff99 ]

Backspace is not working on some terminal emulators which do not send the
key code defined by terminfo. Terminals either send '^H' (8) or '^?' (127).
But currently only '^?' is handled. Let's also handle '^H' for those
terminals.

Signed-off-by: Changbin Du <changbin.du@gmail.com>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Sasha Levin (Microsoft) <sashal@kernel.org>
2019-05-16 19:44:59 +02:00
Masahiro Yamada
0e817654f8 kconfig: fix memory leak when EOF is encountered in quotation
[ Upstream commit fbac5977d81cb2b2b7e37b11c459055d9585273c ]

An unterminated string literal followed by new line is passed to the
parser (with "multi-line strings not supported" warning shown), then
handled properly there.

On the other hand, an unterminated string literal at end of file is
never passed to the parser, then results in memory leak.

[Test Code]

  ----------(Kconfig begin)----------
  source "Kconfig.inc"

  config A
          bool "a"
  -----------(Kconfig end)-----------

  --------(Kconfig.inc begin)--------
  config B
          bool "b\No new line at end of file
  ---------(Kconfig.inc end)---------

[Summary from Valgrind]

  Before the fix:

    LEAK SUMMARY:
       definitely lost: 16 bytes in 1 blocks
       ...

  After the fix:

    LEAK SUMMARY:
       definitely lost: 0 bytes in 0 blocks
       ...

Eliminate the memory leak path by handling this case. Of course, such
a Kconfig file is wrong already, so I will add an error message later.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2019-01-26 09:42:54 +01:00
Masahiro Yamada
6b25c8de31 kconfig: fix file name and line number of warn_ignored_character()
[ Upstream commit 77c1c0fa8b1477c5799bdad65026ea5ff676da44 ]

Currently, warn_ignore_character() displays invalid file name and
line number.

The lexer should use current_file->name and yylineno, while the parser
should use zconf_curname() and zconf_lineno().

This difference comes from that the lexer is always going ahead
of the parser. The parser needs to look ahead one token to make a
shift/reduce decision, so the lexer is requested to scan more text
from the input file.

This commit fixes the warning message from warn_ignored_character().

[Test Code]

  ----(Kconfig begin)----
  /
  -----(Kconfig end)-----

[Output]

  Before the fix:

  <none>:0:warning: ignoring unsupported character '/'

  After the fix:

  Kconfig:1:warning: ignoring unsupported character '/'

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2019-01-26 09:42:54 +01:00
Nathan Chancellor
3165890915 kconfig: Avoid format overflow warning from GCC 8.1
commit 2ae89c7a82ea9d81a19b4fc2df23bef4b112f24e upstream.

In file included from scripts/kconfig/zconf.tab.c:2485:
scripts/kconfig/confdata.c: In function ‘conf_write’:
scripts/kconfig/confdata.c:773:22: warning: ‘%s’ directive writing likely 7 or more bytes into a region of size between 1 and 4097 [-Wformat-overflow=]
  sprintf(newname, "%s%s", dirname, basename);
                      ^~
scripts/kconfig/confdata.c:773:19: note: assuming directive output of 7 bytes
  sprintf(newname, "%s%s", dirname, basename);
                   ^~~~~~
scripts/kconfig/confdata.c:773:2: note: ‘sprintf’ output 1 or more bytes (assuming 4104) into a destination of size 4097
  sprintf(newname, "%s%s", dirname, basename);
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
scripts/kconfig/confdata.c:776:23: warning: ‘.tmpconfig.’ directive writing 11 bytes into a region of size between 1 and 4097 [-Wformat-overflow=]
   sprintf(tmpname, "%s.tmpconfig.%d", dirname, (int)getpid());
                       ^~~~~~~~~~~
scripts/kconfig/confdata.c:776:3: note: ‘sprintf’ output between 13 and 4119 bytes into a destination of size 4097
   sprintf(tmpname, "%s.tmpconfig.%d", dirname, (int)getpid());
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Increase the size of tmpname and newname to make GCC happy.

Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-06-13 16:15:27 +02:00
Ulf Magnusson
5bfe39f17d kconfig: Fix expr_free() E_NOT leak
[ Upstream commit 5b1374b3b3c2fc4f63a398adfa446fb8eff791a4 ]

Only the E_NOT operand and not the E_NOT node itself was freed, due to
accidentally returning too early in expr_free(). Outline of leak:

	switch (e->type) {
	...
	case E_NOT:
		expr_free(e->left.expr);
		return;
	...
	}
	*Never reached, 'e' leaked*
	free(e);

Fix by changing the 'return' to a 'break'.

Summary from Valgrind on 'menuconfig' (ARCH=x86) before the fix:

	LEAK SUMMARY:
	   definitely lost: 44,448 bytes in 1,852 blocks
	   ...

Summary after the fix:

	LEAK SUMMARY:
	   definitely lost: 1,608 bytes in 67 blocks
	   ...

Signed-off-by: Ulf Magnusson <ulfalizer@gmail.com>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-05-30 07:48:53 +02:00
Ulf Magnusson
921fcd9436 kconfig: Fix automatic menu creation mem leak
[ Upstream commit ae7440ef0c8013d68c00dad6900e7cce5311bb1c ]

expr_trans_compare() always allocates and returns a new expression,
giving the following leak outline:

	...
	*Allocate*
	basedep = expr_trans_compare(basedep, E_UNEQUAL, &symbol_no);
	...
	for (menu = parent->next; menu; menu = menu->next) {
		...
		*Copy*
		dep2 = expr_copy(basedep);
		...
		*Free copy*
		expr_free(dep2);
	}
	*basedep lost!*

Fix by freeing 'basedep' after the loop.

Summary from Valgrind on 'menuconfig' (ARCH=x86) before the fix:

	LEAK SUMMARY:
	   definitely lost: 344,376 bytes in 14,349 blocks
	   ...

Summary after the fix:

	LEAK SUMMARY:
	   definitely lost: 44,448 bytes in 1,852 blocks
	   ...

Signed-off-by: Ulf Magnusson <ulfalizer@gmail.com>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-05-30 07:48:53 +02:00
Ulf Magnusson
608b42a348 kconfig: Don't leak main menus during parsing
[ Upstream commit 0724a7c32a54e3e50d28e19e30c59014f61d4e2c ]

If a 'mainmenu' entry appeared in the Kconfig files, two things would
leak:

	- The 'struct property' allocated for the default "Linux Kernel
	  Configuration" prompt.

	- The string for the T_WORD/T_WORD_QUOTE prompt after the
	  T_MAINMENU token, allocated on the heap in zconf.l.

To fix it, introduce a new 'no_mainmenu_stmt' nonterminal that matches
if there's no 'mainmenu' and adds the default prompt. That means the
prompt only gets allocated once regardless of whether there's a
'mainmenu' statement or not, and managing it becomes simple.

Summary from Valgrind on 'menuconfig' (ARCH=x86) before the fix:

	LEAK SUMMARY:
	   definitely lost: 344,568 bytes in 14,352 blocks
	   ...

Summary after the fix:

	LEAK SUMMARY:
	   definitely lost: 344,440 bytes in 14,350 blocks
	   ...

Signed-off-by: Ulf Magnusson <ulfalizer@gmail.com>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-05-30 07:48:53 +02:00
Ben Hutchings
7fb5a93645 kconfig/nconf: Fix hang when editing symbol with a long prompt
commit 79e51b5c2deea542b3bb8c66e0d502230b017dde upstream.

Currently it is impossible to edit the value of a config symbol with a
prompt longer than (terminal width - 2) characters.  dialog_inputbox()
calculates a negative x-offset for the input window and newwin() fails
as this is invalid.  It also doesn't check for this failure, so it
busy-loops calling wgetch(NULL) which immediately returns -1.

The additions in the offset calculations also don't match the intended
size of the window.

Limit the window size and calculate the offset similarly to
show_scroll_win().

Fixes: 692d97c380 ("kconfig: new configuration interface (nconfig)")
Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-01-09 08:07:53 +01:00
Al Viro
22327f609c unbreak allmodconfig KCONFIG_ALLCONFIG=...
commit 6b87b70c5339f30e3c5b32085e69625906513dc2 upstream.

	Prior to 3.13 make allmodconfig KCONFIG_ALLCONFIG=/dev/null used
to be equivalent to make allmodconfig; these days it hardwires MODULES to n.
In fact, any KCONFIG_ALLCONFIG that doesn't set MODULES explicitly is
treated as if it set it to n.

	Regression had been introduced by commit cfa98f ("kconfig: do not
override symbols already set"); what happens is that conf_read_simple()
does sym_calc_value(modules_sym) on exit, which leaves SYMBOL_VALID set and
has conf_set_all_new_symbols() skip modules_sym.

	It's pretty easy to fix - simply move that call of sym_calc_value()
into the callers, except for the ones in KCONFIG_ALLCONFIG handling.
Objections?

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Fixes: cfa98f2e0a ("kconfig: do not override symbols already set")
Signed-off-by: Michal Marek <mmarek@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-05-04 14:48:54 -07:00
Jan Beulich
a42c9e4f1b scripts/kconfig: allow building with make 3.80 again
commit 42f9d3c6888bceef6dc7ba72c77acf47347dcf05 upstream.

Documentation/Changes still lists this as the minimal required version,
so it ought to remain usable for the time being.

Fixes: d2036f30cf ("scripts/kconfig/Makefile: Allow KBUILD_DEFCONFIG to be a target")
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Michal Marek <mmarek@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-04-12 09:09:00 -07:00
Linus Torvalds
152813e6e4 Merge branch 'kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
Pull kconfig updates from Michal Marek:

 - 'make xconfig' ported to Qt5, dropping support for Qt3

 - merge_config.sh supports a single-input-file mode and also respects
   $KCONFIG_CONFIG

 - Fix for incorrect display of >= and > in dependency expressions

* 'kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild: (44 commits)
  Add current selection check.
  Use pkg-config to find Qt 4 and 5 instead of direct qmake
  kconfig: Fix copy&paste error
  kconfig/merge_config.sh: Accept a single file
  kconfig/merge_config.sh: Support KCONFIG_CONFIG
  Update the buildsystem for KConfig finding Qt
  Port xconfig to Qt5 - Update copyright.
  Port xconfig to Qt5 - Fix goParent issue.
  Port xconfig to Qt5 - on Back clicked, deselect old item.
  Port xconfig to Qt5 - Add(back) one click checkbox toggle.
  Port xconfig to Qt5 - Add(back) lineedit editing.
  Port xconfig to Qt5 - Remove some commented code.
  Port xconfig to Qt5 - Source format.
  Port xconfig to Qt5 - Add horizontal scrollbar, and scroll per pixel.
  Port xconfig to Qt5 - Change ConfigItem constructor parent type.
  Port xconfig to Qt5 - Disable ConfigList soring
  Port xconfig to Qt5 - Remove ConfigList::updateMenuList template.
  Port xconfig to Qt5 - Add ConfigList::mode to initializer list.
  Port xconfig to Qt5 - Add ConfigItem::nextItem to initializer list.
  Port xconfig to Qt5 - Tree widget set column titles.
  ...
2015-11-10 21:06:50 -08:00
Boris Barbulovski
be596aaa74 Add current selection check.
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
[mmarek: I missed it in the original Qt5 patch set, which caused a crash]
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-11-02 21:43:58 +01:00
Thiago Macieira
588446a847 Use pkg-config to find Qt 4 and 5 instead of direct qmake
The Qt Project recommendation is that there should always be a "qmake"
binary and it should never be renamed. If it's necessary to handle
multiple Qt versions, the Qt Project recommends using qtchooser.

Unfortunately, some distros do not follow the recommendation, so we
would need to check qmake-qt4, qmake-qt5, etc. So, instead, let's try
pkg-config.

Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Reported-by: Alexey Brodkin <abrodkin@synopsys.com>
Acked-by: Alexey Brodkin <abrodkin@synopsys.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-11-02 21:43:09 +01:00
Michal Sojka
f6aad2615c kconfig: Fix copy&paste error
Fixes: 31847b67be ("kconfig: allow use of relations other than (in)equality")
Signed-off-by: Michal Sojka <sojkam1@fel.cvut.cz>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Michal Marek <mmarek@suse.cz>
2015-10-20 19:13:14 +02:00
Michael Ellerman
bd960f0983 scripts/kconfig/Makefile: Fix KBUILD_DEFCONFIG check when building with O=
My recent commit d2036f30cf ("scripts/kconfig/Makefile: Allow
KBUILD_DEFCONFIG to be a target"), contained a bug in that when it
checks if KBUILD_DEFCONFIG is a file it forgets to prepend $(srctree) to
the path.

This causes the build to fail when building out of tree (with O=), and
when the value of KBUILD_DEFCONFIG is 'defconfig'. In that case we will
fail to find the 'defconfig' file, because we look in the build
directory not $(srctree), and so we will call Make again with
'defconfig' as the target. From there we loop infinitely calling 'make
defconfig' again and again.

The fix is simple, we need to look for the file under $(srctree).

Fixes: d2036f30cf ("scripts/kconfig/Makefile: Allow KBUILD_DEFCONFIG to be a target")
Reported-by: Olof Johansson <olof@lixom.net>
Acked-by: Michal Marek <mmarek@suse.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2015-10-15 20:31:42 +11:00
Gabriel de Perthuis
2163e7b38f kconfig/merge_config.sh: Accept a single file
merge_config.sh can usefully be applied to a single file.
It implicitly merges with the default configuration.

Signed-off-by: Gabriel de Perthuis <g2p.code@gmail.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 16:19:37 +02:00
Gabriel de Perthuis
ed94fea5ba kconfig/merge_config.sh: Support KCONFIG_CONFIG
All make targets support $KCONFIG_CONFIG because they
run scripts/kconf.  Make sure merge_config.sh accesses the
correct file in all cases.

Previously this script broke in two different code paths,
one for targets like kvmconfig (which use merge_config.sh -m
then call a target that respects KCONFIG_CONFIG) and one for
direct use of the script without -m, which called make rules
that edit KCONFIG_CONFIG but verified a different file.

Signed-off-by: Gabriel de Perthuis <g2p.code@gmail.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 16:19:33 +02:00
Thiago Macieira
d1b0dc90ab Update the buildsystem for KConfig finding Qt
The buildsystem will now only search for Qt 4 and Qt 5. Support for Qt 2
and 3 was dropped in the previous commits (Qt 3 was EOL'ed in 2010 or
so...).

For Qt 5, to be future-proof with the future direction notice appearing
in the 5.5 release, C++11 support is automatically enabled.

Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 15:00:25 +02:00
Boris Barbulovski
b4ff1de3b8 Port xconfig to Qt5 - Update copyright.
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 15:00:25 +02:00
Boris Barbulovski
ee7298fbc0 Port xconfig to Qt5 - Fix goParent issue.
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 15:00:25 +02:00
Boris Barbulovski
5df9da9df2 Port xconfig to Qt5 - on Back clicked, deselect old item.
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 15:00:25 +02:00
Boris Barbulovski
76d53cbbae Port xconfig to Qt5 - Add(back) one click checkbox toggle.
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 14:59:04 +02:00
Boris Barbulovski
e336b9f132 Port xconfig to Qt5 - Add(back) lineedit editing.
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 14:59:04 +02:00
Boris Barbulovski
5c60014b4e Port xconfig to Qt5 - Remove some commented code.
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 14:59:04 +02:00
Boris Barbulovski
b3c48f964c Port xconfig to Qt5 - Source format.
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 14:59:03 +02:00
Boris Barbulovski
f999cc06f9 Port xconfig to Qt5 - Add horizontal scrollbar, and scroll per pixel.
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 14:59:03 +02:00
Boris Barbulovski
d960b98899 Port xconfig to Qt5 - Change ConfigItem constructor parent type.
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 14:59:03 +02:00
Boris Barbulovski
a5225e9bc9 Port xconfig to Qt5 - Disable ConfigList soring
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 14:59:03 +02:00
Boris Barbulovski
5c6f1554ba Port xconfig to Qt5 - Remove ConfigList::updateMenuList template.
ConfigItem executes parent->takeChild(0)

while

ConfigList executes parent->takeTopLevelItem(0)

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 14:59:03 +02:00
Boris Barbulovski
dbf629331a Port xconfig to Qt5 - Add ConfigList::mode to initializer list.
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 14:59:03 +02:00
Boris Barbulovski
86c052827b Port xconfig to Qt5 - Add ConfigItem::nextItem to initializer list.
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 14:59:03 +02:00
Boris Barbulovski
a52cb321de Port xconfig to Qt5 - Tree widget set column titles.
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 14:59:03 +02:00
Boris Barbulovski
e484fe3a9b Port xconfig to Qt5 - Quick workaround to bypass app crash at startup.
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 14:59:03 +02:00
Boris Barbulovski
9bd36ed363 Port xconfig to Qt5 - Set ConfigView object name.
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 14:59:02 +02:00
Boris Barbulovski
c14fa5e123 Port xconfig to Qt5 - Use correct signal names.
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 14:59:02 +02:00
Boris Barbulovski
9bfda0ab03 Port xconfig to Qt5 - Remove Qt3Support from Makefile.
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 14:59:02 +02:00
Boris Barbulovski
d5d973c3f8 Port xconfig to Qt5 - Put back some of the old implementation(part 2).
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 14:59:02 +02:00
Boris Barbulovski
59e564408f Port xconfig to Qt5 - Put back some of the old implementation.
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 14:59:02 +02:00
Boris Barbulovski
1019f1a586 Port xconfig to Qt5 - Introduce Qt4/5 version of ConfigList and ConfigItem
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 14:59:02 +02:00
Boris Barbulovski
92119937e8 Port xconfig to Qt5 - update signals
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 14:59:02 +02:00
Boris Barbulovski
68ccb7ef49 Port xconfig to Qt5 - Fix the code so it compiles with Qt5
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 14:59:02 +02:00
Boris Barbulovski
76538660fb Port xconfig to Qt5 - Remove custom ListView classes.
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 14:59:02 +02:00
Boris Barbulovski
780505e33f Port xconfig to Qt5 - Make single/split/full actions checkable.
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 14:59:01 +02:00
Boris Barbulovski
9c86235a19 Port xconfig to Qt5 - Update QAction checkable
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 14:59:01 +02:00
Boris Barbulovski
92298b496d Port xconfig to Qt5 - Fix layout margin.
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
2015-10-14 14:59:01 +02:00