xfs-masters
[Top] [All Lists]

[xfs-masters] [Bug 717] New: xfs can potentially dead-locks on xfs_iloc

To: xfs-master@xxxxxxxxxxx
Subject: [xfs-masters] [Bug 717] New: xfs can potentially dead-locks on xfs_ilock while handling page fault of user address
From: bugzilla-daemon@xxxxxxxxxxx
Date: Thu, 17 Aug 2006 22:21:41 -0700
Reply-to: xfs-masters@xxxxxxxxxxx
Sender: xfs-masters-bounce@xxxxxxxxxxx
http://oss.sgi.com/bugzilla/show_bug.cgi?id=717

           Summary: xfs can potentially dead-locks on xfs_ilock while
                    handling page fault  of user address
           Product: Linux XFS
           Version: unspecified
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: XFS kernel code
        AssignedTo: xfs-master@xxxxxxxxxxx
        ReportedBy: uvsaradhi@xxxxxxxxx
                CC: uvsaradhi@xxxxxxxxx


Dead-lock is as follows:

system_call->sys_ioctl->file_ioctl->xfs_ioctl->xfs_ioc_getbmap->
xfs_getbmap(does copy out while holding xfs_ilock)->copy_user_generic->
error_sti->do_page_fault->handle_mm_fault->do_no_page->
do_anonymous_page->__alloc_pages->try_to_free_pages->shrink_caches->
shrink_cache->shrink_list->pageout->linvfs_writepage->
xfs_page_state_convert->xfs_iomap->xfs_ilock(waiting for the lock that was took
in xfs_getbmap)

Above dead-lock is feasible in xfs_read/xfs_write. xfs_read holds the lock in
shared mode and tries to copy the data out to user address using
fill_read_actor. If this address page faults and memory is under pressure,
try_to_free_pages might come across dirty pages of this xfs_inode and we 
dead-lock the application.

-- 
Configure bugmail: http://oss.sgi.com/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.


<Prev in Thread] Current Thread [Next in Thread>
  • [xfs-masters] [Bug 717] New: xfs can potentially dead-locks on xfs_ilock while handling page fault of user address, bugzilla-daemon <=