• Satoru Takeuchi's avatar
    module: Remove a extra null character at the top of module->strtab. · 54523ec7
    Satoru Takeuchi authored
    There is a extra null character('\0') at the top of module->strtab for
    each module. Commit 59ef28b1 introduced this bug and this patch fixes it.
    
    Live dump log of the current linus git kernel(HEAD is 2844a487):
    ============================================================================
    crash> mod | grep loop
    ffffffffa01db0a0  loop             16689  (not loaded)  [CONFIG_KALLSYMS]
    crash> module.core_symtab ffffffffa01db0a0
      core_symtab = 0xffffffffa01db320crash> rd 0xffffffffa01db320 12
    ffffffffa01db320:  0000005500000001 0000000000000000   ....U...........
    ffffffffa01db330:  0000000000000000 0002007400000002   ............t...
    ffffffffa01db340:  ffffffffa01d8000 0000000000000038   ........8.......
    ffffffffa01db350:  001a00640000000e ffffffffa01daeb0   ....d...........
    ffffffffa01db360:  00000000000000a0 0002007400000019   ............t...
    ffffffffa01db370:  ffffffffa01d8068 000000000000001b   h...............
    crash> module.core_strtab ffffffffa01db0a0
      core_strtab = 0xffffffffa01dbb30 ""
    crash> rd 0xffffffffa01dbb30 4
    ffffffffa01dbb30:  615f70616d6b0000 66780063696d6f74   ..kmap_atomic.xf
    ffffffffa01dbb40:  73636e75665f7265 72665f646e696600   er_funcs.find_fr
    ============================================================================
    
    We expect Just first one byte of '\0', but actually first two bytes
    are '\0'. Here is The relationship between symtab and strtab.
    
    	symtab_idx	strtab_idx	symbol
    	-----------------------------------------------
    	0		0x1		"\0" # startab_idx should be 0
    	1		0x2		"kmap_atomic"
    	2		0xe		"xfer_funcs"
    	3		0x19		"find_fr..."
    
    By applying this patch, it becomes as follows.
    
    	symtab_idx	strtab_idx	symbol
    	-----------------------------------------------
    	0		0x0		"\0"	# extra byte is removed
    	1		0x1		"kmap_atomic"
    	2		0xd		"xfer_funcs"
    	3		0x18		"find_fr..."
    Signed-off-by: default avatarSatoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
    Cc: Masaki Kimura <masaki.kimura.kz@hitachi.com>
    Cc: Rusty Russell <rusty@rustcorp.com.au>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
    54523ec7
module.c 93.6 KB