All of lore.kernel.org
 help / color / mirror / Atom feed
From: Prarit Bhargava <prarit@redhat.com>
To: Hugh Dickins <hughd@google.com>
Cc: Morten Stevens <mstevens@fedoraproject.org>,
	Daniel Wagner <wagi@monom.org>,
	Dave Chinner <david@fromorbit.com>,
	Eric Paris <eparis@redhat.com>,
	Eric Sandeen <esandeen@redhat.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: linux 4.1-rc7 deadlock
Date: Thu, 11 Jun 2015 18:15:54 -0400	[thread overview]
Message-ID: <557A089A.3090202@redhat.com> (raw)
In-Reply-To: <alpine.LSU.2.11.1506111246170.6716@eggly.anvils>



On 06/11/2015 04:06 PM, Hugh Dickins wrote:
> On Tue, 9 Jun 2015, Morten Stevens wrote:
>> 2015-06-09 16:10 GMT+02:00 Daniel Wagner <wagi@monom.org>:
>>> On 06/09/2015 01:54 PM, Morten Stevens wrote:
>>>> [   28.193327]  Possible unsafe locking scenario:
>>>>
>>>> [   28.194297]        CPU0                    CPU1
>>>> [   28.194774]        ----                    ----
>>>> [   28.195254]   lock(&mm->mmap_sem);
>>>> [   28.195709]                                lock(&xfs_dir_ilock_class);
>>>> [   28.196174]                                lock(&mm->mmap_sem);
>>>> [   28.196654]   lock(&isec->lock);
>>>> [   28.197108]
>>>
>>> [...]
>>>
>>>> Any ideas?
>>>
>>> I think you hit the same problem many have already reported:
>>>
>>> https://lkml.org/lkml/2015/3/30/594
>>
>> Yes, that sounds very likely. But that was about 1 month ago, so I
>> thought that it has been fixed in the last weeks?
> 
> It's not likely to get fixed without Cc'ing the right people.
> 
> This appears to be the same as Prarit reported to linux-mm on
> 2014/09/10.  Dave Chinner thinks it's a shmem bug, I disagree,
> but I am hopeful that it can be easily fixed at the shmem end.
> 
> Here's the patch I suggested nine months ago: but got no feedback,
> so it remains Not-Yet-Signed-off-by.  Please, if you find this works
> (and does not just delay the lockdep conflict until a little later),
> do let me know, then I can add some Tested-bys and send it to Linus.
> 
> mm: shmem_zero_setup skip security check and lockdep conflict with XFS
> 
> It appears that, at some point last year, XFS made directory handling
> changes which bring it into lockdep conflict with shmem_zero_setup():
> it is surprising that mmap() can clone an inode while holding mmap_sem,
> but that has been so for many years.
> 
> Since those few lockdep traces that I've seen all implicated selinux,
> I'm hoping that we can use the __shmem_file_setup(,,,S_PRIVATE) which
> v3.13's commit c7277090927a ("security: shmem: implement kernel private
> shmem inodes") introduced to avoid LSM checks on kernel-internal inodes:
> the mmap("/dev/zero") cloned inode is indeed a kernel-internal detail.
> 
> This also covers the !CONFIG_SHMEM use of ramfs to support /dev/zero
> (and MAP_SHARED|MAP_ANONYMOUS).  I thought there were also drivers
> which cloned inode in mmap(), but if so, I cannot locate them now.
> 
> Reported-by: Prarit Bhargava <prarit@redhat.com>
> Reported-by: Daniel Wagner <wagi@monom.org>
> Reported-by: Morten Stevens <mstevens@fedoraproject.org>
> Not-Yet-Signed-off-by: Hugh Dickins <hughd@google.com>
> ---
> 
>  mm/shmem.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> --- 4.1-rc7/mm/shmem.c	2015-04-26 19:16:31.352191298 -0700
> +++ linux/mm/shmem.c	2015-06-11 11:08:21.042745594 -0700
> @@ -3401,7 +3401,7 @@ int shmem_zero_setup(struct vm_area_stru
>  	struct file *file;
>  	loff_t size = vma->vm_end - vma->vm_start;
>  
> -	file = shmem_file_setup("dev/zero", size, vma->vm_flags);
> +	file = __shmem_file_setup("dev/zero", size, vma->vm_flags, S_PRIVATE);

Perhaps,

	file = shmem_kernel_file_setup("dev/zero", size, vma->vm_flags) ?

Tested-by: Prarit Bhargava <prarit@redhat.com>

P.

>  	if (IS_ERR(file))
>  		return PTR_ERR(file);
>  
> 

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

WARNING: multiple messages have this Message-ID (diff)
From: Prarit Bhargava <prarit@redhat.com>
To: Hugh Dickins <hughd@google.com>
Cc: Morten Stevens <mstevens@fedoraproject.org>,
	Daniel Wagner <wagi@monom.org>,
	Dave Chinner <david@fromorbit.com>,
	Eric Paris <eparis@redhat.com>,
	Eric Sandeen <esandeen@redhat.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: linux 4.1-rc7 deadlock
Date: Thu, 11 Jun 2015 18:15:54 -0400	[thread overview]
Message-ID: <557A089A.3090202@redhat.com> (raw)
In-Reply-To: <alpine.LSU.2.11.1506111246170.6716@eggly.anvils>



On 06/11/2015 04:06 PM, Hugh Dickins wrote:
> On Tue, 9 Jun 2015, Morten Stevens wrote:
>> 2015-06-09 16:10 GMT+02:00 Daniel Wagner <wagi@monom.org>:
>>> On 06/09/2015 01:54 PM, Morten Stevens wrote:
>>>> [   28.193327]  Possible unsafe locking scenario:
>>>>
>>>> [   28.194297]        CPU0                    CPU1
>>>> [   28.194774]        ----                    ----
>>>> [   28.195254]   lock(&mm->mmap_sem);
>>>> [   28.195709]                                lock(&xfs_dir_ilock_class);
>>>> [   28.196174]                                lock(&mm->mmap_sem);
>>>> [   28.196654]   lock(&isec->lock);
>>>> [   28.197108]
>>>
>>> [...]
>>>
>>>> Any ideas?
>>>
>>> I think you hit the same problem many have already reported:
>>>
>>> https://lkml.org/lkml/2015/3/30/594
>>
>> Yes, that sounds very likely. But that was about 1 month ago, so I
>> thought that it has been fixed in the last weeks?
> 
> It's not likely to get fixed without Cc'ing the right people.
> 
> This appears to be the same as Prarit reported to linux-mm on
> 2014/09/10.  Dave Chinner thinks it's a shmem bug, I disagree,
> but I am hopeful that it can be easily fixed at the shmem end.
> 
> Here's the patch I suggested nine months ago: but got no feedback,
> so it remains Not-Yet-Signed-off-by.  Please, if you find this works
> (and does not just delay the lockdep conflict until a little later),
> do let me know, then I can add some Tested-bys and send it to Linus.
> 
> mm: shmem_zero_setup skip security check and lockdep conflict with XFS
> 
> It appears that, at some point last year, XFS made directory handling
> changes which bring it into lockdep conflict with shmem_zero_setup():
> it is surprising that mmap() can clone an inode while holding mmap_sem,
> but that has been so for many years.
> 
> Since those few lockdep traces that I've seen all implicated selinux,
> I'm hoping that we can use the __shmem_file_setup(,,,S_PRIVATE) which
> v3.13's commit c7277090927a ("security: shmem: implement kernel private
> shmem inodes") introduced to avoid LSM checks on kernel-internal inodes:
> the mmap("/dev/zero") cloned inode is indeed a kernel-internal detail.
> 
> This also covers the !CONFIG_SHMEM use of ramfs to support /dev/zero
> (and MAP_SHARED|MAP_ANONYMOUS).  I thought there were also drivers
> which cloned inode in mmap(), but if so, I cannot locate them now.
> 
> Reported-by: Prarit Bhargava <prarit@redhat.com>
> Reported-by: Daniel Wagner <wagi@monom.org>
> Reported-by: Morten Stevens <mstevens@fedoraproject.org>
> Not-Yet-Signed-off-by: Hugh Dickins <hughd@google.com>
> ---
> 
>  mm/shmem.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> --- 4.1-rc7/mm/shmem.c	2015-04-26 19:16:31.352191298 -0700
> +++ linux/mm/shmem.c	2015-06-11 11:08:21.042745594 -0700
> @@ -3401,7 +3401,7 @@ int shmem_zero_setup(struct vm_area_stru
>  	struct file *file;
>  	loff_t size = vma->vm_end - vma->vm_start;
>  
> -	file = shmem_file_setup("dev/zero", size, vma->vm_flags);
> +	file = __shmem_file_setup("dev/zero", size, vma->vm_flags, S_PRIVATE);

Perhaps,

	file = shmem_kernel_file_setup("dev/zero", size, vma->vm_flags) ?

Tested-by: Prarit Bhargava <prarit@redhat.com>

P.

>  	if (IS_ERR(file))
>  		return PTR_ERR(file);
>  
> 

  reply	other threads:[~2015-06-11 22:15 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-09 11:54 linux 4.1-rc7 deadlock Morten Stevens
2015-06-09 14:10 ` Daniel Wagner
2015-06-09 15:35   ` Morten Stevens
2015-06-11 20:06     ` Hugh Dickins
2015-06-11 20:06       ` Hugh Dickins
2015-06-11 22:15       ` Prarit Bhargava [this message]
2015-06-11 22:15         ` Prarit Bhargava
2015-06-14 16:44         ` Hugh Dickins
2015-06-14 16:44           ` Hugh Dickins

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=557A089A.3090202@redhat.com \
    --to=prarit@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=david@fromorbit.com \
    --cc=eparis@redhat.com \
    --cc=esandeen@redhat.com \
    --cc=hughd@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mstevens@fedoraproject.org \
    --cc=wagi@monom.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.