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 for Android: free password hash cracker in your pocket
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:	Fri, 05 Aug 2016 03:42:33 +0000
From:	bugzilla-daemon@...zilla.kernel.org
To:	linux-ext4@...r.kernel.org
Subject: [Bug 151511] New: BUGON at fs/ext4/inode.c line :2245

https://bugzilla.kernel.org/show_bug.cgi?id=151511

            Bug ID: 151511
           Summary: BUGON at fs/ext4/inode.c line :2245
           Product: File System
           Version: 2.5
    Kernel Version: 3.14.74
          Hardware: All
                OS: Linux
              Tree: Mainline
            Status: NEW
          Severity: high
          Priority: P1
         Component: ext4
          Assignee: fs_ext4@...nel-bugs.osdl.org
          Reporter: 35445233@...com
        Regression: No

I hit the BUG_ON after munmap a file.

BUGON at fs/ext4/inode.c line :2245
mpage_prepare_extent_to_map
...
head = page_buffers(page); //bug on at here


when io err happened at ext4_writepages->mpage_map_and_submit_extent,ext4
return err from mpage_map_and_submit_extent->mpage_map_one_extent.
Then ext4 set give_up_on_write  be true to discard  dirty pages to avoid
infinite loops.
But in mpage_release_unused_pages(&mpd, give_up_on_write), ext4 didn't clean
the pte->dirty.
when page munmaped,unmap_page_range->zap_pud_range->zap_pte_range
set_page_dirty again will cause the bugon at fs/ext4/inode.c line :2245.

    root/mm/memory.c
    zap_pte_range
    1145:        if (pte_dirty(ptent))
    1146:            set_page_dirty(page); //set again cause bugon


I  clear_page_dirty_for_io  in mpage_release_unused_pages can solve the bugon. 

                      if (invalidate) {
+                                       if (page_mapped(page)) 
+                                       {
+                                       clear_page_dirty_for_io(page);
+                                       )
                                block_invalidatepage_range(page, 0,
                                                           PAGE_CACHE_SIZE);
                                ClearPageUptodate(page);
but i am not sure the patch is ok.

-- 
You are receiving this mail because:
You are watching the assignee of the bug.
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ