linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Mike Kravetz <mike.kravetz@oracle.com>
To: Andrew Morton <akpm@linux-foundation.org>,
	Mina Almasry <almasrymina@google.com>
Cc: Oscar Salvador <osalvador@suse.de>,
	Muchun Song <songmuchun@bytedance.com>,
	Michal Hocko <mhocko@suse.com>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v1] hugetlbfs: fix hugetlbfs_statfs() locking
Date: Fri, 29 Apr 2022 13:59:33 -0700	[thread overview]
Message-ID: <152cb376-3793-0dd3-7d2d-d6197b8e014f@oracle.com> (raw)
In-Reply-To: <20220429133345.d79af45fb107340c31655c8e@linux-foundation.org>

On 4/29/22 13:33, Andrew Morton wrote:
> On Fri, 29 Apr 2022 13:22:06 -0700 Mina Almasry <almasrymina@google.com> wrote:
> 
>> After commit db71ef79b59b ("hugetlb: make free_huge_page irq safe"),
>> the subpool lock should be locked with spin_lock_irq() and all call
>> sites was modified as such, except for the ones in hugetlbfs_statfs().
>>
>> ...
>>
>> --- a/fs/hugetlbfs/inode.c
>> +++ b/fs/hugetlbfs/inode.c
>> @@ -1048,12 +1048,12 @@ static int hugetlbfs_statfs(struct dentry *dentry, struct kstatfs *buf)
>>  		if (sbinfo->spool) {
>>  			long free_pages;
>>
>> -			spin_lock(&sbinfo->spool->lock);
>> +			spin_lock_irq(&sbinfo->spool->lock);
>>  			buf->f_blocks = sbinfo->spool->max_hpages;
>>  			free_pages = sbinfo->spool->max_hpages
>>  				- sbinfo->spool->used_hpages;
>>  			buf->f_bavail = buf->f_bfree = free_pages;
>> -			spin_unlock(&sbinfo->spool->lock);
>> +			spin_unlock_irq(&sbinfo->spool->lock);
>>  			buf->f_files = sbinfo->max_inodes;
>>  			buf->f_ffree = sbinfo->free_inodes;
>>  		}
> 
> Looks good.

Agree, thanks Mina!
Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com>

> 
> This seems to be theoretically deadlockable and less theoretically
> lockdep splattable, so I'm inclined to cc:stable on this.
> 
> I wonder why we didn't do that with db71ef79b59bb2e78dc4.
> 

I do not think it was considered because the "less theoretically lockdep splattable" was so rare.

IIRC, the issue of possibly freeing hugetlb pages in IRQ context existed
from almost the beginning of hugetlb.  It was first discovered and 'addressed'
with c77c0a8ac4c5.  That was not cc:stable.  Then it was discovered that c77c0a8ac4c5 was not complete, so db71ef79b59b effectively replaced c77c0a8ac4c5.  That also was not cc:stable.  I guess we could cc:stable this.

Mina, did you find this with lockdep or just code inspection?
-- 
Mike Kravetz


  reply	other threads:[~2022-04-29 20:59 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-29 20:22 Mina Almasry
2022-04-29 20:33 ` Andrew Morton
2022-04-29 20:59   ` Mike Kravetz [this message]
2022-05-02 23:19     ` Mina Almasry

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=152cb376-3793-0dd3-7d2d-d6197b8e014f@oracle.com \
    --to=mike.kravetz@oracle.com \
    --cc=akpm@linux-foundation.org \
    --cc=almasrymina@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@suse.com \
    --cc=osalvador@suse.de \
    --cc=songmuchun@bytedance.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox