linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] fs: ntfs: Disable NTFS_RW for PPC
@ 2021-11-22 23:06 Guenter Roeck
  2021-11-23  1:15 ` Joel Stanley
  0 siblings, 1 reply; 5+ messages in thread
From: Guenter Roeck @ 2021-11-22 23:06 UTC (permalink / raw)
  To: Anton Altaparmakov
  Cc: linux-ntfs-dev, linux-kernel, Guenter Roeck, Michael Ellerman,
	Stephen Rothwell, Linus Torvalds

NTFS_RW code allocates page size dependent arrays on the stack. This
results in build failures if the page size is 64k, which is now the
default for PPC.

fs/ntfs/aops.c: In function 'ntfs_write_mst_block':
fs/ntfs/aops.c:1311:1: error:
	the frame size of 2240 bytes is larger than 2048 bytes

Increasing the maximum frame size for PPC just to silence this error does
not really help. It would have to be set to a really large value for 256k
pages. Such a large frame size could potentially result in stack overruns
in this code and elsewhere and is therefore not desirable. Disable NTFS_RW
for PPC instead.

Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
---
v2: Introduce new configuration flag DISABLE_NTFS_RW and use it to disable NTFS_RW
    for PPC

 fs/ntfs/Kconfig | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/fs/ntfs/Kconfig b/fs/ntfs/Kconfig
index 1667a7e590d8..324224febb6a 100644
--- a/fs/ntfs/Kconfig
+++ b/fs/ntfs/Kconfig
@@ -49,8 +49,13 @@ config NTFS_DEBUG
 	  When reporting bugs, please try to have available a full dump of
 	  debugging messages while the misbehaviour was occurring.
 
+config DISABLE_NTFS_RW
+	bool
+	default y if PPC
+
 config NTFS_RW
 	bool "NTFS write support"
+	depends on !DISABLE_NTFS_RW
 	depends on NTFS_FS
 	help
 	  This enables the partial, but safe, write support in the NTFS driver.
-- 
2.33.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] fs: ntfs: Disable NTFS_RW for PPC
  2021-11-22 23:06 [PATCH v2] fs: ntfs: Disable NTFS_RW for PPC Guenter Roeck
@ 2021-11-23  1:15 ` Joel Stanley
  2021-11-23  2:09   ` Guenter Roeck
  0 siblings, 1 reply; 5+ messages in thread
From: Joel Stanley @ 2021-11-23  1:15 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Anton Altaparmakov, linux-ntfs-dev, Linux Kernel Mailing List,
	Michael Ellerman, Stephen Rothwell, Linus Torvalds

On Mon, 22 Nov 2021 at 23:58, Guenter Roeck <linux@roeck-us.net> wrote:
>
> NTFS_RW code allocates page size dependent arrays on the stack. This
> results in build failures if the page size is 64k, which is now the
> default for PPC.

It became the default for PPC_BOOK3S_64, which doesn't include all of
PPC, in f22969a66041 ("powerpc/64s: Default to 64K pages for 64 bit
book3s").

You might want to add a mention of this commit in your commit message.

>
> fs/ntfs/aops.c: In function 'ntfs_write_mst_block':
> fs/ntfs/aops.c:1311:1: error:
>         the frame size of 2240 bytes is larger than 2048 bytes
>
> Increasing the maximum frame size for PPC just to silence this error does
> not really help. It would have to be set to a really large value for 256k
> pages. Such a large frame size could potentially result in stack overruns
> in this code and elsewhere and is therefore not desirable. Disable NTFS_RW
> for PPC instead.
>
> Cc: Michael Ellerman <mpe@ellerman.id.au>
> Cc: Stephen Rothwell <sfr@canb.auug.org.au>
> Cc: Linus Torvalds <torvalds@linux-foundation.org>
> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
> ---
> v2: Introduce new configuration flag DISABLE_NTFS_RW and use it to disable NTFS_RW
>     for PPC
>
>  fs/ntfs/Kconfig | 5 +++++
>  1 file changed, 5 insertions(+)
>
> diff --git a/fs/ntfs/Kconfig b/fs/ntfs/Kconfig
> index 1667a7e590d8..324224febb6a 100644
> --- a/fs/ntfs/Kconfig
> +++ b/fs/ntfs/Kconfig
> @@ -49,8 +49,13 @@ config NTFS_DEBUG
>           When reporting bugs, please try to have available a full dump of
>           debugging messages while the misbehaviour was occurring.
>
> +config DISABLE_NTFS_RW
> +       bool
> +       default y if PPC

PPC_64K_PAGES would be more accurate.

I think arm64 was seeing a similar build error, so you could include
ARM64_64K_PAGES as well?

> +
>  config NTFS_RW
>         bool "NTFS write support"
> +       depends on !DISABLE_NTFS_RW
>         depends on NTFS_FS
>         help
>           This enables the partial, but safe, write support in the NTFS driver.
> --
> 2.33.0
>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] fs: ntfs: Disable NTFS_RW for PPC
  2021-11-23  1:15 ` Joel Stanley
@ 2021-11-23  2:09   ` Guenter Roeck
  2021-11-23 11:43     ` Michael Ellerman
  0 siblings, 1 reply; 5+ messages in thread
From: Guenter Roeck @ 2021-11-23  2:09 UTC (permalink / raw)
  To: Joel Stanley
  Cc: Anton Altaparmakov, linux-ntfs-dev, Linux Kernel Mailing List,
	Michael Ellerman, Stephen Rothwell, Linus Torvalds

On 11/22/21 5:15 PM, Joel Stanley wrote:
> On Mon, 22 Nov 2021 at 23:58, Guenter Roeck <linux@roeck-us.net> wrote:
>>
>> NTFS_RW code allocates page size dependent arrays on the stack. This
>> results in build failures if the page size is 64k, which is now the
>> default for PPC.
> 
> It became the default for PPC_BOOK3S_64, which doesn't include all of
> PPC, in f22969a66041 ("powerpc/64s: Default to 64K pages for 64 bit
> book3s").
> 
> You might want to add a mention of this commit in your commit message.
> 
>>
>> fs/ntfs/aops.c: In function 'ntfs_write_mst_block':
>> fs/ntfs/aops.c:1311:1: error:
>>          the frame size of 2240 bytes is larger than 2048 bytes
>>
>> Increasing the maximum frame size for PPC just to silence this error does
>> not really help. It would have to be set to a really large value for 256k
>> pages. Such a large frame size could potentially result in stack overruns
>> in this code and elsewhere and is therefore not desirable. Disable NTFS_RW
>> for PPC instead.
>>
>> Cc: Michael Ellerman <mpe@ellerman.id.au>
>> Cc: Stephen Rothwell <sfr@canb.auug.org.au>
>> Cc: Linus Torvalds <torvalds@linux-foundation.org>
>> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
>> ---
>> v2: Introduce new configuration flag DISABLE_NTFS_RW and use it to disable NTFS_RW
>>      for PPC
>>
>>   fs/ntfs/Kconfig | 5 +++++
>>   1 file changed, 5 insertions(+)
>>
>> diff --git a/fs/ntfs/Kconfig b/fs/ntfs/Kconfig
>> index 1667a7e590d8..324224febb6a 100644
>> --- a/fs/ntfs/Kconfig
>> +++ b/fs/ntfs/Kconfig
>> @@ -49,8 +49,13 @@ config NTFS_DEBUG
>>            When reporting bugs, please try to have available a full dump of
>>            debugging messages while the misbehaviour was occurring.
>>
>> +config DISABLE_NTFS_RW
>> +       bool
>> +       default y if PPC
> 
> PPC_64K_PAGES would be more accurate.
> 
> I think arm64 was seeing a similar build error, so you could include
> ARM64_64K_PAGES as well?
> 
Yes, you are correct.

fs/ntfs/aops.c: In function 'ntfs_write_mst_block':
fs/ntfs/aops.c:1311:1: error: the frame size of 2608 bytes is larger than 2048 bytes

Ok, I'll do that. And, digging for it, I see

config VMXNET3
         tristate "VMware VMXNET3 ethernet driver"
         depends on PCI && INET
         depends on !(PAGE_SIZE_64KB || ARM64_64K_PAGES || \
                      IA64_PAGE_SIZE_64KB || PARISC_PAGE_SIZE_64KB || \
                      PPC_64K_PAGES)

That adds hexagon, ia64, mips, parisc, and sh to the list of affected architectures.
Plus, of course, there is PAGE_SIZE_256KB and PPC_256K_PAGES.

So we are looking for something like

config DISABLE_NTFS_RW
	bool
	default y if PAGE_SIZE_256KB || PPC_256K_PAGES || \
		PAGE_SIZE_64KB || ARM64_64K_PAGES || IA64_PAGE_SIZE_64KB || \
		PARISC_PAGE_SIZE_64KB || PPC_64K_PAGES

Anything else ?

Guenter


>> +
>>   config NTFS_RW
>>          bool "NTFS write support"
>> +       depends on !DISABLE_NTFS_RW
>>          depends on NTFS_FS
>>          help
>>            This enables the partial, but safe, write support in the NTFS driver.
>> --
>> 2.33.0
>>


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] fs: ntfs: Disable NTFS_RW for PPC
  2021-11-23  2:09   ` Guenter Roeck
@ 2021-11-23 11:43     ` Michael Ellerman
  2021-11-23 16:11       ` Guenter Roeck
  0 siblings, 1 reply; 5+ messages in thread
From: Michael Ellerman @ 2021-11-23 11:43 UTC (permalink / raw)
  To: Guenter Roeck, Joel Stanley
  Cc: Anton Altaparmakov, linux-ntfs-dev, Linux Kernel Mailing List,
	Stephen Rothwell, Linus Torvalds

Guenter Roeck <linux@roeck-us.net> writes:
> On 11/22/21 5:15 PM, Joel Stanley wrote:
>> On Mon, 22 Nov 2021 at 23:58, Guenter Roeck <linux@roeck-us.net> wrote:
>>>
>>> NTFS_RW code allocates page size dependent arrays on the stack. This
>>> results in build failures if the page size is 64k, which is now the
>>> default for PPC.
>> 
>> It became the default for PPC_BOOK3S_64, which doesn't include all of
>> PPC, in f22969a66041 ("powerpc/64s: Default to 64K pages for 64 bit
>> book3s").
>> 
>> You might want to add a mention of this commit in your commit message.
>> 
>>>
>>> fs/ntfs/aops.c: In function 'ntfs_write_mst_block':
>>> fs/ntfs/aops.c:1311:1: error:
>>>          the frame size of 2240 bytes is larger than 2048 bytes
>>>
>>> Increasing the maximum frame size for PPC just to silence this error does
>>> not really help. It would have to be set to a really large value for 256k
>>> pages. Such a large frame size could potentially result in stack overruns
>>> in this code and elsewhere and is therefore not desirable. Disable NTFS_RW
>>> for PPC instead.
>>>
>>> Cc: Michael Ellerman <mpe@ellerman.id.au>
>>> Cc: Stephen Rothwell <sfr@canb.auug.org.au>
>>> Cc: Linus Torvalds <torvalds@linux-foundation.org>
>>> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
>>> ---
>>> v2: Introduce new configuration flag DISABLE_NTFS_RW and use it to disable NTFS_RW
>>>      for PPC
>>>
>>>   fs/ntfs/Kconfig | 5 +++++
>>>   1 file changed, 5 insertions(+)
>>>
>>> diff --git a/fs/ntfs/Kconfig b/fs/ntfs/Kconfig
>>> index 1667a7e590d8..324224febb6a 100644
>>> --- a/fs/ntfs/Kconfig
>>> +++ b/fs/ntfs/Kconfig
>>> @@ -49,8 +49,13 @@ config NTFS_DEBUG
>>>            When reporting bugs, please try to have available a full dump of
>>>            debugging messages while the misbehaviour was occurring.
>>>
>>> +config DISABLE_NTFS_RW
>>> +       bool
>>> +       default y if PPC
>> 
>> PPC_64K_PAGES would be more accurate.
>> 
>> I think arm64 was seeing a similar build error, so you could include
>> ARM64_64K_PAGES as well?
>> 
> Yes, you are correct.
>
> fs/ntfs/aops.c: In function 'ntfs_write_mst_block':
> fs/ntfs/aops.c:1311:1: error: the frame size of 2608 bytes is larger than 2048 bytes
>
> Ok, I'll do that. And, digging for it, I see
>
> config VMXNET3
>          tristate "VMware VMXNET3 ethernet driver"
>          depends on PCI && INET
>          depends on !(PAGE_SIZE_64KB || ARM64_64K_PAGES || \
>                       IA64_PAGE_SIZE_64KB || PARISC_PAGE_SIZE_64KB || \
>                       PPC_64K_PAGES)
>
> That adds hexagon, ia64, mips, parisc, and sh to the list of affected architectures.
> Plus, of course, there is PAGE_SIZE_256KB and PPC_256K_PAGES.
>
> So we are looking for something like
>
> config DISABLE_NTFS_RW
> 	bool
> 	default y if PAGE_SIZE_256KB || PPC_256K_PAGES || \
> 		PAGE_SIZE_64KB || ARM64_64K_PAGES || IA64_PAGE_SIZE_64KB || \
> 		PARISC_PAGE_SIZE_64KB || PPC_64K_PAGES
>
> Anything else ?

Can we do something like this instead?

I'm pretty sure it does what we want for NTFS, and also for VMXNET3.

It is not pretty, but at least keeps the arch specifics out of driver
Kconfigs.

cheers


diff --git a/arch/Kconfig b/arch/Kconfig
index 26b8ed11639d..d3c4ab249e9c 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -991,6 +991,16 @@ config HAVE_ARCH_COMPAT_MMAP_BASES
 	  and vice-versa 32-bit applications to call 64-bit mmap().
 	  Required for applications doing different bitness syscalls.
 
+config PAGE_SIZE_LESS_THAN_64KB
+	def_bool y
+	depends on !ARM64_64K_PAGES
+	depends on !IA64_PAGE_SIZE_64KB
+	depends on !PAGE_SIZE_64KB
+	depends on !PARISC_PAGE_SIZE_64KB
+	depends on !PPC_64K_PAGES
+	depends on !PPC_256K_PAGES
+	depends on !PAGE_SIZE_256KB
+
 # This allows to use a set of generic functions to determine mmap base
 # address by giving priority to top-down scheme only if the process
 # is not in legacy mode (compat task, unlimited stack size or
diff --git a/fs/ntfs/Kconfig b/fs/ntfs/Kconfig
index 1667a7e590d8..f93e69a61283 100644
--- a/fs/ntfs/Kconfig
+++ b/fs/ntfs/Kconfig
@@ -52,6 +52,7 @@ config NTFS_DEBUG
 config NTFS_RW
 	bool "NTFS write support"
 	depends on NTFS_FS
+	depends on PAGE_SIZE_LESS_THAN_64KB
 	help
 	  This enables the partial, but safe, write support in the NTFS driver.
 

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] fs: ntfs: Disable NTFS_RW for PPC
  2021-11-23 11:43     ` Michael Ellerman
@ 2021-11-23 16:11       ` Guenter Roeck
  0 siblings, 0 replies; 5+ messages in thread
From: Guenter Roeck @ 2021-11-23 16:11 UTC (permalink / raw)
  To: Michael Ellerman
  Cc: Joel Stanley, Anton Altaparmakov, linux-ntfs-dev,
	Linux Kernel Mailing List, Stephen Rothwell, Linus Torvalds

On Tue, Nov 23, 2021 at 10:43:48PM +1100, Michael Ellerman wrote:
[ ... ]
> >
> > So we are looking for something like
> >
> > config DISABLE_NTFS_RW
> > 	bool
> > 	default y if PAGE_SIZE_256KB || PPC_256K_PAGES || \
> > 		PAGE_SIZE_64KB || ARM64_64K_PAGES || IA64_PAGE_SIZE_64KB || \
> > 		PARISC_PAGE_SIZE_64KB || PPC_64K_PAGES
> >
> > Anything else ?
> 
> Can we do something like this instead?
> 
> I'm pretty sure it does what we want for NTFS, and also for VMXNET3.
> 
> It is not pretty, but at least keeps the arch specifics out of driver
> Kconfigs.
> 
> cheers
> 
> 
> diff --git a/arch/Kconfig b/arch/Kconfig
> index 26b8ed11639d..d3c4ab249e9c 100644
> --- a/arch/Kconfig
> +++ b/arch/Kconfig
> @@ -991,6 +991,16 @@ config HAVE_ARCH_COMPAT_MMAP_BASES
>  	  and vice-versa 32-bit applications to call 64-bit mmap().
>  	  Required for applications doing different bitness syscalls.
>  
> +config PAGE_SIZE_LESS_THAN_64KB
> +	def_bool y
> +	depends on !ARM64_64K_PAGES
> +	depends on !IA64_PAGE_SIZE_64KB
> +	depends on !PAGE_SIZE_64KB
> +	depends on !PARISC_PAGE_SIZE_64KB
> +	depends on !PPC_64K_PAGES
> +	depends on !PPC_256K_PAGES
> +	depends on !PAGE_SIZE_256KB
> +

Sure, works for me. I'll wait another day or two for additional feedback
before sending out v3.

Guenter

>  # This allows to use a set of generic functions to determine mmap base
>  # address by giving priority to top-down scheme only if the process
>  # is not in legacy mode (compat task, unlimited stack size or
> diff --git a/fs/ntfs/Kconfig b/fs/ntfs/Kconfig
> index 1667a7e590d8..f93e69a61283 100644
> --- a/fs/ntfs/Kconfig
> +++ b/fs/ntfs/Kconfig
> @@ -52,6 +52,7 @@ config NTFS_DEBUG
>  config NTFS_RW
>  	bool "NTFS write support"
>  	depends on NTFS_FS
> +	depends on PAGE_SIZE_LESS_THAN_64KB
>  	help
>  	  This enables the partial, but safe, write support in the NTFS driver.
>  

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-11-23 16:11 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-22 23:06 [PATCH v2] fs: ntfs: Disable NTFS_RW for PPC Guenter Roeck
2021-11-23  1:15 ` Joel Stanley
2021-11-23  2:09   ` Guenter Roeck
2021-11-23 11:43     ` Michael Ellerman
2021-11-23 16:11       ` Guenter Roeck

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).