Revision 3808d34838184fd29088d6b3a364ba2f1c018fb6 authored by Stanislaw Gruszka on 02 February 2017, 12:32:10 UTC, committed by David S. Miller on 03 February 2017, 16:13:00 UTC
If ->get_regs_len() callback return 0, we allocate 0 bytes of memory,
what print ugly warning in dmesg, which can be found further below.

This happen on mac80211 devices where ieee80211_get_regs_len() just
return 0 and driver only fills ethtool_regs structure and actually
do not provide any dump. However I assume this can happen on other
drivers i.e. when for some devices driver provide regs dump and for
others do not. Hence preventing to to print warning in ethtool code
seems to be reasonable.

ethtool: vmalloc: allocation failure: 0 bytes, mode:0x24080c2(GFP_KERNEL|__GFP_HIGHMEM|__GFP_ZERO)
<snip>
Call Trace:
[<ffffffff813bde47>] dump_stack+0x63/0x8c
[<ffffffff811b0a1f>] warn_alloc+0x13f/0x170
[<ffffffff811f0476>] __vmalloc_node_range+0x1e6/0x2c0
[<ffffffff811f0874>] vzalloc+0x54/0x60
[<ffffffff8169986c>] dev_ethtool+0xb4c/0x1b30
[<ffffffff816adbb1>] dev_ioctl+0x181/0x520
[<ffffffff816714d2>] sock_do_ioctl+0x42/0x50
<snip>
Mem-Info:
active_anon:435809 inactive_anon:173951 isolated_anon:0
 active_file:835822 inactive_file:196932 isolated_file:0
 unevictable:0 dirty:8 writeback:0 unstable:0
 slab_reclaimable:157732 slab_unreclaimable:10022
 mapped:83042 shmem:306356 pagetables:9507 bounce:0
 free:130041 free_pcp:1080 free_cma:0
Node 0 active_anon:1743236kB inactive_anon:695804kB active_file:3343288kB inactive_file:787728kB unevictable:0kB isolated(anon):0kB isolated(file):0kB mapped:332168kB dirty:32kB writeback:0kB shmem:0kB shmem_thp: 0kB shmem_pmdmapped: 0kB anon_thp: 1225424kB writeback_tmp:0kB unstable:0kB pages_scanned:0 all_unreclaimable? no
Node 0 DMA free:15900kB min:136kB low:168kB high:200kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB present:15984kB managed:15900kB mlocked:0kB slab_reclaimable:0kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
lowmem_reserve[]: 0 3187 7643 7643
Node 0 DMA32 free:419732kB min:28124kB low:35152kB high:42180kB active_anon:541180kB inactive_anon:248988kB active_file:1466388kB inactive_file:389632kB unevictable:0kB writepending:0kB present:3370280kB managed:3290932kB mlocked:0kB slab_reclaimable:217184kB slab_unreclaimable:4180kB kernel_stack:160kB pagetables:984kB bounce:0kB free_pcp:2236kB local_pcp:660kB free_cma:0kB
lowmem_reserve[]: 0 0 4456 4456

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 013e816
Raw File
Kconfig.debug
menu "Kernel hacking"

source "lib/Kconfig.debug"

config DEBUG_DECOMPRESS_KERNEL
	bool "Using serial port during decompressing kernel"
	depends on DEBUG_KERNEL
	default n
	help
	  If you say Y here you will confirm the start and the end of
	  decompressing Linux seeing "Uncompressing Linux... " and
	  "Ok, booting the kernel.\n" on console.

config TEST_MISALIGNMENT_HANDLER
	bool "Run tests on the misalignment handler"
	depends on DEBUG_KERNEL
	default n
	help
	  If you say Y here the kernel will execute a list of misaligned memory
	  accesses to make sure the misalignment handler deals them with
	  correctly.  If it does not, the kernel will throw a BUG.

config KPROBES
	bool "Kprobes"
	depends on DEBUG_KERNEL
	help
	  Kprobes allows you to trap at almost any kernel address and
	  execute a callback function.  register_kprobe() establishes
	  a probepoint and specifies the callback.  Kprobes is useful
	  for kernel debugging, non-intrusive instrumentation and testing.
	  If in doubt, say "N".

config GDBSTUB
	bool "Remote GDB kernel debugging"
	depends on DEBUG_KERNEL && DEPRECATED
	select DEBUG_INFO
	select FRAME_POINTER
	help
	  If you say Y here, it will be possible to remotely debug the kernel
	  using gdb. This enlarges your kernel ELF image disk size by several
	  megabytes and requires a machine with more than 16 MB, better 32 MB
	  RAM to avoid excessive linking time. This is only useful for kernel
	  hackers. If unsure, say N.

	  This is deprecated in favour of KGDB and will be removed in a later
	  version.

config GDBSTUB_IMMEDIATE
	bool "Break into GDB stub immediately"
	depends on GDBSTUB
	help
	  If you say Y here, GDB stub will break into the program as soon as
	  possible, leaving the program counter at the beginning of
	  start_kernel() in init/main.c.

config GDBSTUB_ALLOW_SINGLE_STEP
	bool "Allow software single-stepping in GDB stub"
	depends on GDBSTUB && !SMP && !PREEMPT
	help
	  Allow GDB stub to perform software single-stepping through the
	  kernel.  This doesn't work very well on SMP or preemptible kernels as
	  it uses temporary breakpoints to emulate single-stepping.

config GDB_CONSOLE
	bool "Console output to GDB"
	depends on GDBSTUB
	help
	  If you are using GDB for remote debugging over a serial port and
	  would like kernel messages to be formatted into GDB $O packets so
	  that GDB prints them as program output, say 'Y'.

config GDBSTUB_DEBUGGING
	bool "Debug GDB stub by messages to serial port"
	depends on GDBSTUB
	help
	  This causes debugging messages to be displayed at various points
	  during execution of the GDB stub routines. Such messages will be
	  displayed on ttyS0 if that isn't the GDB stub's port, or ttySM0
	  otherwise.

config GDBSTUB_DEBUG_ENTRY
	bool "Debug GDB stub entry"
	depends on GDBSTUB_DEBUGGING
	help
	  This option causes information to be displayed about entry to or exit
	  from the main GDB stub routine.

config GDBSTUB_DEBUG_PROTOCOL
	bool "Debug GDB stub protocol"
	depends on GDBSTUB_DEBUGGING
	help
	  This option causes information to be displayed about the GDB remote
	  protocol messages generated exchanged with GDB.

config GDBSTUB_DEBUG_IO
	bool "Debug GDB stub I/O"
	depends on GDBSTUB_DEBUGGING
	help
	  This option causes information to be displayed about GDB stub's
	  low-level I/O.

config GDBSTUB_DEBUG_BREAKPOINT
	bool "Debug GDB stub breakpoint management"
	depends on GDBSTUB_DEBUGGING
	help
	  This option causes information to be displayed about GDB stub's
	  breakpoint management.

choice
	prompt "GDB stub port"
	default GDBSTUB_ON_TTYSM0
	depends on GDBSTUB
	help
	  Select the serial port used for GDB-stub.

config GDBSTUB_ON_TTYSM0
	bool "/dev/ttySM0 [SIF0]"
	depends on MN10300_TTYSM0
	select GDBSTUB_ON_TTYSMx

config GDBSTUB_ON_TTYSM1
	bool "/dev/ttySM1 [SIF1]"
	depends on MN10300_TTYSM1
	select GDBSTUB_ON_TTYSMx

config GDBSTUB_ON_TTYSM2
	bool "/dev/ttySM2 [SIF2]"
	depends on MN10300_TTYSM2
	select GDBSTUB_ON_TTYSMx

config GDBSTUB_ON_TTYS0
	bool "/dev/ttyS0"
	select GDBSTUB_ON_TTYSx

config GDBSTUB_ON_TTYS1
	bool "/dev/ttyS1"
	select GDBSTUB_ON_TTYSx

endchoice

config GDBSTUB_ON_TTYSMx
	bool
	depends on GDBSTUB_ON_TTYSM0 || GDBSTUB_ON_TTYSM1 || GDBSTUB_ON_TTYSM2
	default y

config GDBSTUB_ON_TTYSx
	bool
	depends on GDBSTUB_ON_TTYS0 || GDBSTUB_ON_TTYS1
	default y

endmenu

config KERNEL_DEBUGGER
	def_bool y
	depends on GDBSTUB || KGDB
back to top