How to disable address randomization ?

admin LI admin at hifiphile.com
Fri Jan 14 02:12:28 EST 2022


Hi Jeff,

Thanks for your help, finally I found this in kernel document.

Pointer Types 
============= 
Pointers printed without a specifier extension (i.e unadorned %p) are hashed to give a unique identifier without leaking kernel addresses to user space. On 64 bit machines the first 32 bits are zeroed. If you _really_ want the address see %px below.

⁣Get BlueMail for Android ​

On Jan 13, 2022, 23:44, at 23:44, Jeffrey Walton <noloader at gmail.com> wrote:
>On Thu, Jan 13, 2022 at 4:04 PM admin LI <admin at hifiphile.com> wrote:
>>
>> I'm developing a kernel module for an ARM machine, while debugging I
>found addresses
>> printed are all randomized and useless for debugging.
>>
>> To prove I was not crazy I wrote this small program:
>>
>> ---------------------------------
>> #include <linux/init.h>
>> #include <linux/module.h>
>> #include <linux/kernel.h>
>> #include <linux/slab.h>
>>
>> MODULE_LICENSE("GPL");
>> MODULE_AUTHOR("Somebody");
>> MODULE_DESCRIPTION("A simple example Linux module.");
>> MODULE_VERSION("0.01");
>>
>> static int __init example_init(void) {
>>     uint32_t a;
>>     uint32_t b;
>>     uint32_t c;
>>     uint8_t d[10];
>>     uint8_t *e;
>>
>>     printk(KERN_INFO "Hello, World!\n");
>>     printk(KERN_INFO "&a %p\n",&a);
>>     printk(KERN_INFO "&b %p\n",&b);
>>     printk(KERN_INFO "&c %p\n",&c);
>>     printk(KERN_INFO "&d %p\n",d);
>>     printk(KERN_INFO "&d[0] %p\n",&d[0]);
>>     printk(KERN_INFO "&d[1] %p\n",&d[1]);
>>
>>     e = kmalloc(10, GFP_KERNEL);
>>     printk(KERN_INFO "&e[0] %p\n",&e[0]);
>>     printk(KERN_INFO "&e[1] %p\n",&e[1]);
>>
>>     kfree(e);
>>
>>  return 0;
>> }
>>
>> static void __exit example_exit(void) {
>>  printk(KERN_INFO "Goodbye, World!\n");
>> }
>>
>> module_init(example_init);
>> module_exit(example_exit);
>> ---------------------------------
>> And it gave me this output:
>>
>> Hello, World!
>> &a b3f9fa31
>> &b 27e1c68a
>> &c da50d287
>> &d 9f9aec2b
>> &d[0] 9f9aec2b
>> &d[1] cc627580
>> &e[0] 98b8c9eb
>> &e[1] 45f248f8
>>
>> Then I tested on my debian host machine which gave me the same kind
>of randomized addresses.
>>
>> When I search randomization the only thing I found is KASLR which I
>don't think is the same thing.
>
>I think something else may be going on, but I'll toss this out there
>in case it helps.
>
>In the past randomization was disabled by writing 0 to
>/proc/sys/kernel/randomize_va_space. Something like:
>
>    sysctl -w kernel.randomize_va_space=0
>
>To make it permanent, change it in /etc/sysctl.conf.
>
>Jeff
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20220114/5f6684e8/attachment.html>


More information about the Kernelnewbies mailing list