lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <m1psfkzn9i.fsf@ebiederm.dsl.xmission.com>
Date:	Tue, 01 Aug 2006 05:52:25 -0600
From:	ebiederm@...ssion.com (Eric W. Biederman)
To:	Paulo Marques <pmarques@...popie.com>
Cc:	fastboot@...l.org, linux-kernel@...r.kernel.org,
	Horms <horms@...ge.net.au>,
	Jan Kratochvil <lace@...kratochvil.net>,
	"H. Peter Anvin" <hpa@...or.com>,
	Magnus Damm <magnus.damm@...il.com>,
	Vivek Goyal <vgoyal@...ibm.com>, Linda Wang <lwang@...hat.com>
Subject: Re: [PATCH 8/33] kallsyms.c: Generate relocatable symbols.

Paulo Marques <pmarques@...popie.com> writes:

> Eric W. Biederman wrote:
>> Print the addresses of non-absolute symbols relative to _text
>> so that ld will generate relocations.  Allowing a relocatable
>> kernel to relocate them.  We can't actually use the symbol names
>> because kallsyms includes static symbols that are not exported
>> from their object files.
>> [...]
>>  	output_label("kallsyms_addresses");
>>  	for (i = 0; i < table_cnt; i++) {
>> -		printf("\tPTR\t%#llx\n", table[i].addr);
>> +		if (toupper(table[i].sym[0]) != 'A') {
>> +			printf("\tPTR\t_text + %#llx\n",
>> +				table[i].addr - _text);
>> +		} else {
>> +			printf("\tPTR\t%#llx\n", table[i].addr);
>> +		}
>
> Doesn't this break kallsyms for almost everyone?
>
> kallsyms addresses aren't used just for displaying, but also to find symbols
> from their addresses (from the stack trace, etc.).
>
> Am I missing something?

Yes, you are missing something.  This fixes the addresses in the table.

All this does is to put the same values in kallsyms that we have now
but it creates relocations for them.   So on a kernel where we process
relocations before loading (because we are running the kernel at a
different virtual address).  The processing of the relocations will
fix kallsyms to match the running kernel.

If we don't do this we will have the problems you are worried about.

Of course I would be overjoyed if you could point out a bug like
you are worried about so I could fix it :)

Eric
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ