Linux NFS development
 help / color / mirror / Atom feed
* [PATCH v1 00/17] Convert server-side NFS_ACLv2 XDR to use xdrgen
@ 2026-10-22 13:53 Chuck Lever
  2026-10-22 13:53 ` [PATCH v1 01/17] xdrgen: Reject out-of-range unsigned short values on decode Chuck Lever
                   ` (16 more replies)
  0 siblings, 17 replies; 18+ messages in thread
From: Chuck Lever @ 2026-10-22 13:53 UTC (permalink / raw)
  To: NeilBrown, Jeff Layton, Olga Kornievskaia, Dai Ngo, Tom Talpey; +Cc: linux-nfs

Replace NFSD's NFS_ACLv2 XDR encoders and decoders with code that is
mechanically generated from the protocol's RPC language description.
No RFC defines NFS_ACL. The description in nfs_acl2.x is copied from
draft-ietf-nfsv4-nfs-acl.

NFS_ACLv2 is the first consumer of the aggregate codec on a counted
array (already queued for v7.4) and the first on the decode side. The
NFSv2 and NFSv3 READDIR conversions exercise only encode of an
optional-data list.

After this series is applied, NFS_ACLv2 reply statuses follow the
draft specification, which has some changes from the previous ad hoc
code. In addition to replacing the status codes defined by the NFSv2
spec, a well-formed but invalid SETACL argument gets ACL2ERR_INVAL,
where the previous decoder returned GARBAGE_ARGS or accepted it. An
undefined GETACL mask bit gets ACL2ERR_INVAL rather than NFSERR_IO.
Statuses that fh_verify() and fh_getattr() produce with no NFSv2
equivalent no longer reach the wire unmapped.

Chuck Lever (17):
  xdrgen: Reject out-of-range unsigned short values on decode
  xdrgen: Reject out-of-range short values on decode
  nfs_common: Export posix_acl_from_nfsacl for server ACL codecs
  NFSD: Remove the unused NFSACL_MAXWORDS macro
  NFSD: Move the definition of NFS_ACL_MAX_ENTRIES
  Documentation: Add the RPC language description of NFS_ACLv2
  NFSD: Add infrastructure for generating NFS_ACLv2 XDR encoders and
    decoders
  NFSD: Remove '#include "xdr3.h"' from nfs2acl.c
  NFSD: Remove '#include "xdr.h"' from nfs2acl.c
  NFSD: Switch to using the NFS_ACLv2 status codes
  NFSD: Use xdrgen XDR functions for the NFS-ACL v2 NULL procedure
  NFSD: Implement NFS-ACL v2 ACL encoding and decoding with xdrgen
  NFSD: Use xdrgen XDR functions for the NFS-ACL v2 GETACL procedure
  NFSD: Use xdrgen XDR functions for the NFS-ACL v2 SETACL procedure
  NFSD: Use xdrgen XDR functions for the NFS-ACL v2 GETATTR procedure
  NFSD: Use xdrgen XDR functions for the NFS-ACL v2 ACCESS procedure
  NFSD: Map every NFS_ACLv2 reply status into aclstat2

 Documentation/sunrpc/xdr/nfs_acl2.x     | 283 ++++++++
 fs/nfs/nfs3acl.c                        |   1 +
 fs/nfs/nfs3client.c                     |   1 +
 fs/nfs/nfs3xdr.c                        |   1 +
 fs/nfs_common/nfsacl.c                  |  15 +-
 fs/nfsd/Makefile                        |  15 +-
 fs/nfsd/nfs2acl.c                       | 892 +++++++++++++++++-------
 fs/nfsd/nfs3acl.c                       |   4 +-
 fs/nfsd/nfs4xdr.c                       |   1 +
 fs/nfsd/nfs_acl2xdr_gen.c               | 869 +++++++++++++++++++++++
 fs/nfsd/nfs_acl2xdr_gen.h               |  40 ++
 fs/nfsd/nfssvc.c                        |   1 +
 include/linux/nfsacl.h                  |   8 +-
 include/linux/sunrpc/xdrgen/_builtins.h |  16 +-
 include/linux/sunrpc/xdrgen/nfs_acl2.h  | 278 ++++++++
 include/uapi/linux/nfsacl.h             |   2 +
 16 files changed, 2155 insertions(+), 272 deletions(-)
 create mode 100644 Documentation/sunrpc/xdr/nfs_acl2.x
 create mode 100644 fs/nfsd/nfs_acl2xdr_gen.c
 create mode 100644 fs/nfsd/nfs_acl2xdr_gen.h
 create mode 100644 include/linux/sunrpc/xdrgen/nfs_acl2.h

-- 
2.56.0


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

end of thread, other threads:[~2026-10-22 13:53 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-22 13:53 [PATCH v1 00/17] Convert server-side NFS_ACLv2 XDR to use xdrgen Chuck Lever
2026-10-22 13:53 ` [PATCH v1 01/17] xdrgen: Reject out-of-range unsigned short values on decode Chuck Lever
2026-10-22 13:53 ` [PATCH v1 02/17] xdrgen: Reject out-of-range " Chuck Lever
2026-10-22 13:53 ` [PATCH v1 03/17] nfs_common: Export posix_acl_from_nfsacl for server ACL codecs Chuck Lever
2026-10-22 13:53 ` [PATCH v1 04/17] NFSD: Remove the unused NFSACL_MAXWORDS macro Chuck Lever
2026-10-22 13:53 ` [PATCH v1 05/17] NFSD: Move the definition of NFS_ACL_MAX_ENTRIES Chuck Lever
2026-10-22 13:53 ` [PATCH v1 06/17] Documentation: Add the RPC language description of NFS_ACLv2 Chuck Lever
2026-10-22 13:53 ` [PATCH v1 07/17] NFSD: Add infrastructure for generating NFS_ACLv2 XDR encoders and decoders Chuck Lever
2026-10-22 13:53 ` [PATCH v1 08/17] NFSD: Remove '#include "xdr3.h"' from nfs2acl.c Chuck Lever
2026-10-22 13:53 ` [PATCH v1 09/17] NFSD: Remove '#include "xdr.h"' " Chuck Lever
2026-10-22 13:53 ` [PATCH v1 10/17] NFSD: Switch to using the NFS_ACLv2 status codes Chuck Lever
2026-10-22 13:53 ` [PATCH v1 11/17] NFSD: Use xdrgen XDR functions for the NFS-ACL v2 NULL procedure Chuck Lever
2026-10-22 13:53 ` [PATCH v1 12/17] NFSD: Implement NFS-ACL v2 ACL encoding and decoding with xdrgen Chuck Lever
2026-10-22 13:53 ` [PATCH v1 13/17] NFSD: Use xdrgen XDR functions for the NFS-ACL v2 GETACL procedure Chuck Lever
2026-10-22 13:53 ` [PATCH v1 14/17] NFSD: Use xdrgen XDR functions for the NFS-ACL v2 SETACL procedure Chuck Lever
2026-10-22 13:53 ` [PATCH v1 15/17] NFSD: Use xdrgen XDR functions for the NFS-ACL v2 GETATTR procedure Chuck Lever
2026-10-22 13:53 ` [PATCH v1 16/17] NFSD: Use xdrgen XDR functions for the NFS-ACL v2 ACCESS procedure Chuck Lever
2026-10-22 13:53 ` [PATCH v1 17/17] NFSD: Map every NFS_ACLv2 reply status into aclstat2 Chuck Lever

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox