Re: [PATCH v2] fs: ntfs: Disable NTFS_RW for PPC

From: Guenter Roeck
Date: Mon Nov 22 2021 - 21:09:21 EST

On 11/22/21 5:15 PM, Joel Stanley wrote:
On Mon, 22 Nov 2021 at 23:58, Guenter Roeck <linux@xxxxxxxxxxxx> 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

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@xxxxxxxxxxxxxx>
Cc: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx>
Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
Signed-off-by: Guenter Roeck <linux@xxxxxxxxxxxx>
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.

+ 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 || \

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

default y if PAGE_SIZE_256KB || PPC_256K_PAGES || \

Anything else ?


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