On Tue, May 20, 2014 at 02:46:47PM +0530, Prabhakar Lad wrote:
> Hi Sekhar,
> 
> On Tue, May 20, 2014 at 1:43 PM, Sekhar Nori <nsek...@ti.com> wrote:
> > On Tuesday 20 May 2014 12:49 PM, Prabhakar Lad wrote:
> >> Hi,
> >>
> >> On Tue, May 20, 2014 at 12:08 AM, Kevin Hilman <khil...@linaro.org> wrote:
> >>> As found by my automated boot tester[1], dm365 EVM and da850 EVM started
> >>> failing boot tests in today's linux-next.
> >>>
> >>> I haven't had the time to bisect, but it appears to be related to some
> >>> devres failures in the EMAC driver.  Full boot log below for the
> >>> da850evm (the dm365 fault looks the same.)
> >>>
> >> I too hit this issue, this was introduced with commit id:
> >> e194312854edc22a2faf1931b3c0608fe20cb969 (drivers: net:
> >> davinci_cpdma: Convert kzalloc() to devm_kzalloc().)
> >> Reverting this patch fixes it.
> >> From the outset patch looks good, not sure why exactly it is failing.
> >
> > Following patch seems to help. I will post it for review after some more
> > analysis.
> >
> I am not sure if you hit the following issue later fixing above one,
> I see following issue on DA850 evm,
> 
> git bisect points me to
> commit id: 975c3a671f11279441006a29a19f55ccc15fb320
> ( mm: non-atomically mark page accessed during page cache allocation
> where possible)
> 
> Unable to handle kernel paging request at virtual address 30e03501
> pgd = c68cc000
> [30e03501] *pgd=00000000
> Internal error: Oops: 1 [#1] PREEMPT ARM
> Modules linked in:
> CPU: 0 PID: 1015 Comm: network.sh Not tainted 3.15.0-rc5-00323-g975c3a6 #9
> task: c70c4e00 ti: c73d0000 task.ti: c73d0000
> PC is at init_page_accessed+0xc/0x24
> LR is at shmem_write_begin+0x54/0x60
> pc : [<c0088aa0>]    lr : [<c00923e8>]    psr: 20000013

What line does this address correspond to according to addr2line? It's not
a NULL pointer exception obviously because the data address does not match
up and there is a check for NULL before calling init_page_accessed. The
obvious guess would be that this is due to an uninitialised page pointer
on the stack and shmem_getpage_gfp() returning before it gets initialised.

Could you try this please?

diff --git a/mm/filemap.c b/mm/filemap.c
index 2a7b9d1..0691481 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -2459,7 +2459,7 @@ ssize_t generic_perform_write(struct file *file,
                flags |= AOP_FLAG_UNINTERRUPTIBLE;
 
        do {
-               struct page *page;
+               struct page *page = NULL;
                unsigned long offset;   /* Offset into pagecache page */
                unsigned long bytes;    /* Bytes to write to page */
                size_t copied;          /* Bytes copied from user */
_______________________________________________
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to