Re: Understanding NULL pointer dereference

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Prasad, the kernel assumes if the kernel virtual address you are trying to access is between 0 and PAGE_SIZE you are doing NULL pointer dereference.

For example ARM does this when printing an invalid page access fault

printk(KERN_ALERT
"Unable to handle kernel %s at virtual address %08lx\n", (addr < PAGE_SIZE) ? "NULL pointer dereference" : "paging request", addr);

When the core accesses virtual memory it does so via pages or sections. The page attributes for address zero are set in such a way that any read/write/execute will trigger a page fault. This has the side effect of making memory access to any virtual address < PAGE_SIZE trigger page faults as well.

Regards,
-- Mark

Quoting Prasad Joshi <prasadjoshi124@xxxxxxxxx>:

Hi All,

I am trying to understand a a kernel oops report. Here are some of the
fields from the report

BUG: unable to handle kernel NULL pointer dereference at 0000000000000034
Oops: 0000 [#1] SMP
Pid: 6478, comm: cp Tainted: P 2.6.31.5-127.fc12.x86_64 #1 Inspiron 1525
RIP: 0010:[<ffffffff810faac1>] [<ffffffff810faac1>] do_sys_open+0x7a/0x10f
CR2: 0000000000000034

As I know, when a page fault occurs, the address the program attempted to
access is stored in the CR2 register. So probably the pointer is pointing to
address 0034 and is being access.

The BUG string is bit confusing, it says NULL pointer dereference at 0034, I
know the address 00034 is not valid but why is it interpreted as NULL
pointer? The NULL pointer as I know should point to address 0.

Thanks and Regards,
Prasad





--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ




[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux