All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ritesh Harjani <riteshh@linux.ibm.com>
To: Adrian Huang <adrianhuang0701@gmail.com>, linux-nvdimm@lists.01.org
Cc: Yi Zhang <yi.zhang@redhat.com>,
	Mikulas Patocka <mpatocka@redhat.com>, Jan Kara <jack@suse.cz>,
	Adrian Huang <ahuang12@lenovo.com>, Coly Li <colyli@suse.de>,
	linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH v3 1/1] dax: Fix stack overflow when mounting fsdax pmem device
Date: Fri, 18 Sep 2020 16:59:42 +0530	[thread overview]
Message-ID: <356f8764-9699-e268-681f-0531d284079f@linux.ibm.com> (raw)
In-Reply-To: <20200917111549.6367-1-adrianhuang0701@gmail.com>

ccing fs list

On 9/17/20 4:45 PM, Adrian Huang wrote:
> From: Adrian Huang <ahuang12@lenovo.com>
> 
> When mounting fsdax pmem device, commit 6180bb446ab6 ("dax: fix
> detection of dax support for non-persistent memory block devices")
> introduces the stack overflow [1][2]. Here is the call path for
> mounting ext4 file system:
>    ext4_fill_super
>      bdev_dax_supported
>        __bdev_dax_supported
>          dax_supported
>            generic_fsdax_supported
>              __generic_fsdax_supported
>                bdev_dax_supported
> 
> The call path leads to the infinite calling loop, so we cannot
> call bdev_dax_supported() in __generic_fsdax_supported(). The sanity
> checking of the variable 'dax_dev' is moved prior to the two
> bdev_dax_pgoff() checks [3][4].
> 
> [1] https://lore.kernel.org/linux-nvdimm/1420999447.1004543.1600055488770.JavaMail.zimbra@redhat.com/
> [2] https://lore.kernel.org/linux-nvdimm/alpine.LRH.2.02.2009141131220.30651@file01.intranet.prod.int.rdu2.redhat.com/
> [3] https://lore.kernel.org/linux-nvdimm/CA+RJvhxBHriCuJhm-D8NvJRe3h2MLM+ZMFgjeJjrRPerMRLvdg@mail.gmail.com/
> [4] https://lore.kernel.org/linux-nvdimm/20200903160608.GU878166@iweiny-DESK2.sc.intel.com/
> 
> Fixes: 6180bb446ab6 ("dax: fix detection of dax support for non-persistent memory block devices")
> Reported-by: Yi Zhang <yi.zhang@redhat.com>
> Reported-by: Mikulas Patocka <mpatocka@redhat.com>
> Signed-off-by: Adrian Huang <ahuang12@lenovo.com>
> Reviewed-by: Jan Kara <jack@suse.cz>
> Cc: Coly Li <colyli@suse.de>
> Cc: Ira Weiny <ira.weiny@intel.com>
> Cc: John Pittman <jpittman@redhat.com>

Although I see that this is fix is already applied but ccing fsdevel and
ext4 since I ended up debugging and coming to the same conclusion as
this patch is fixing the recursion loop.
If not already applied then feel free to add:

Tested-by: Ritesh Harjani <riteshh@linux.ibm.com>


> ---
> Changelog:
> v3:
>      1. Add Reviewed-by from Jan
>      2. Add Reported-by
>      3. Replace lists.01.org with lore.kernel
> v2:
>      Remove the checking for the returned value '-EOPNOTSUPP' of
>      dax_direct_access(). Jan has prepared a patch to address the
>      issue in dm.
> ---
>   drivers/dax/super.c | 12 ++++++------
>   1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/dax/super.c b/drivers/dax/super.c
> index e5767c83ea23..11d0541e6f8f 100644
> --- a/drivers/dax/super.c
> +++ b/drivers/dax/super.c
> @@ -85,6 +85,12 @@ bool __generic_fsdax_supported(struct dax_device *dax_dev,
>   		return false;
>   	}
>   
> +	if (!dax_dev) {
> +		pr_debug("%s: error: dax unsupported by block device\n",
> +				bdevname(bdev, buf));
> +		return false;
> +	}
> +
>   	err = bdev_dax_pgoff(bdev, start, PAGE_SIZE, &pgoff);
>   	if (err) {
>   		pr_info("%s: error: unaligned partition for dax\n",
> @@ -100,12 +106,6 @@ bool __generic_fsdax_supported(struct dax_device *dax_dev,
>   		return false;
>   	}
>   
> -	if (!dax_dev || !bdev_dax_supported(bdev, blocksize)) {
> -		pr_debug("%s: error: dax unsupported by block device\n",
> -				bdevname(bdev, buf));
> -		return false;
> -	}
> -
>   	id = dax_read_lock();
>   	len = dax_direct_access(dax_dev, pgoff, 1, &kaddr, &pfn);
>   	len2 = dax_direct_access(dax_dev, pgoff_end, 1, &end_kaddr, &end_pfn);
> 

WARNING: multiple messages have this Message-ID (diff)
From: Ritesh Harjani <riteshh@linux.ibm.com>
To: Adrian Huang <adrianhuang0701@gmail.com>, linux-nvdimm@lists.01.org
Cc: Yi Zhang <yi.zhang@redhat.com>,
	Mikulas Patocka <mpatocka@redhat.com>, Jan Kara <jack@suse.cz>,
	Adrian Huang <ahuang12@lenovo.com>, Coly Li <colyli@suse.de>,
	linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH v3 1/1] dax: Fix stack overflow when mounting fsdax pmem device
Date: Fri, 18 Sep 2020 16:59:42 +0530	[thread overview]
Message-ID: <356f8764-9699-e268-681f-0531d284079f@linux.ibm.com> (raw)
In-Reply-To: <20200917111549.6367-1-adrianhuang0701@gmail.com>

ccing fs list

On 9/17/20 4:45 PM, Adrian Huang wrote:
> From: Adrian Huang <ahuang12@lenovo.com>
> 
> When mounting fsdax pmem device, commit 6180bb446ab6 ("dax: fix
> detection of dax support for non-persistent memory block devices")
> introduces the stack overflow [1][2]. Here is the call path for
> mounting ext4 file system:
>    ext4_fill_super
>      bdev_dax_supported
>        __bdev_dax_supported
>          dax_supported
>            generic_fsdax_supported
>              __generic_fsdax_supported
>                bdev_dax_supported
> 
> The call path leads to the infinite calling loop, so we cannot
> call bdev_dax_supported() in __generic_fsdax_supported(). The sanity
> checking of the variable 'dax_dev' is moved prior to the two
> bdev_dax_pgoff() checks [3][4].
> 
> [1] https://lore.kernel.org/linux-nvdimm/1420999447.1004543.1600055488770.JavaMail.zimbra@redhat.com/
> [2] https://lore.kernel.org/linux-nvdimm/alpine.LRH.2.02.2009141131220.30651@file01.intranet.prod.int.rdu2.redhat.com/
> [3] https://lore.kernel.org/linux-nvdimm/CA+RJvhxBHriCuJhm-D8NvJRe3h2MLM+ZMFgjeJjrRPerMRLvdg@mail.gmail.com/
> [4] https://lore.kernel.org/linux-nvdimm/20200903160608.GU878166@iweiny-DESK2.sc.intel.com/
> 
> Fixes: 6180bb446ab6 ("dax: fix detection of dax support for non-persistent memory block devices")
> Reported-by: Yi Zhang <yi.zhang@redhat.com>
> Reported-by: Mikulas Patocka <mpatocka@redhat.com>
> Signed-off-by: Adrian Huang <ahuang12@lenovo.com>
> Reviewed-by: Jan Kara <jack@suse.cz>
> Cc: Coly Li <colyli@suse.de>
> Cc: Ira Weiny <ira.weiny@intel.com>
> Cc: John Pittman <jpittman@redhat.com>

Although I see that this is fix is already applied but ccing fsdevel and
ext4 since I ended up debugging and coming to the same conclusion as
this patch is fixing the recursion loop.
If not already applied then feel free to add:

Tested-by: Ritesh Harjani <riteshh@linux.ibm.com>


> ---
> Changelog:
> v3:
>      1. Add Reviewed-by from Jan
>      2. Add Reported-by
>      3. Replace lists.01.org with lore.kernel
> v2:
>      Remove the checking for the returned value '-EOPNOTSUPP' of
>      dax_direct_access(). Jan has prepared a patch to address the
>      issue in dm.
> ---
>   drivers/dax/super.c | 12 ++++++------
>   1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/dax/super.c b/drivers/dax/super.c
> index e5767c83ea23..11d0541e6f8f 100644
> --- a/drivers/dax/super.c
> +++ b/drivers/dax/super.c
> @@ -85,6 +85,12 @@ bool __generic_fsdax_supported(struct dax_device *dax_dev,
>   		return false;
>   	}
>   
> +	if (!dax_dev) {
> +		pr_debug("%s: error: dax unsupported by block device\n",
> +				bdevname(bdev, buf));
> +		return false;
> +	}
> +
>   	err = bdev_dax_pgoff(bdev, start, PAGE_SIZE, &pgoff);
>   	if (err) {
>   		pr_info("%s: error: unaligned partition for dax\n",
> @@ -100,12 +106,6 @@ bool __generic_fsdax_supported(struct dax_device *dax_dev,
>   		return false;
>   	}
>   
> -	if (!dax_dev || !bdev_dax_supported(bdev, blocksize)) {
> -		pr_debug("%s: error: dax unsupported by block device\n",
> -				bdevname(bdev, buf));
> -		return false;
> -	}
> -
>   	id = dax_read_lock();
>   	len = dax_direct_access(dax_dev, pgoff, 1, &kaddr, &pfn);
>   	len2 = dax_direct_access(dax_dev, pgoff_end, 1, &end_kaddr, &end_pfn);
> 
_______________________________________________
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-leave@lists.01.org

  parent reply	other threads:[~2020-09-18 11:31 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-17 11:15 [PATCH v3 1/1] dax: Fix stack overflow when mounting fsdax pmem device Adrian Huang
2020-09-18  2:07 ` Dan Williams
2020-09-18 11:29 ` Ritesh Harjani [this message]
2020-09-18 11:29   ` Ritesh Harjani

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=356f8764-9699-e268-681f-0531d284079f@linux.ibm.com \
    --to=riteshh@linux.ibm.com \
    --cc=adrianhuang0701@gmail.com \
    --cc=ahuang12@lenovo.com \
    --cc=colyli@suse.de \
    --cc=jack@suse.cz \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-nvdimm@lists.01.org \
    --cc=mpatocka@redhat.com \
    --cc=yi.zhang@redhat.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 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.