mbox series

[v1,00/29] server-side lockd XDR overhaul

Message ID 162005520101.23028.15766816408658851498.stgit@klimt.1015granger.net (mailing list archive)
Headers show
Series server-side lockd XDR overhaul | expand

Message

Chuck Lever May 3, 2021, 3:22 p.m. UTC
Same approach as what has been done for NFSv2, NFSv3, and NFSv4: XDR
decoding and encoding functions have been updated to use xdr_stream.
This adopts common XDR infrastructure for these functions and makes
constructing and parsing more secure and robust.

---

Chuck Lever (29):
      lockd: Remove stale comments
      lockd: Create a simplified .vs_dispatch method for NLM requests
      lockd: Common NLM XDR helpers
      lockd: Update the NLMv1 void argument decoder to use struct xdr_stream
      lockd: Update the NLMv1 TEST arguments decoder to use struct xdr_stream
      lockd: Update the NLMv1 LOCK arguments decoder to use struct xdr_stream
      lockd: Update the NLMv1 CANCEL arguments decoder to use struct xdr_stream
      lockd: Update the NLMv1 UNLOCK arguments decoder to use struct xdr_stream
      lockd: Update the NLMv1 nlm_res arguments decoder to use struct xdr_stream
      lockd: Update the NLMv1 SM_NOTIFY arguments decoder to use struct xdr_stream
      lockd: Update the NLMv1 SHARE arguments decoder to use struct xdr_stream
      lockd: Update the NLMv1 FREE_ALL arguments decoder to use struct xdr_stream
      lockd: Update the NLMv1 void results encoder to use struct xdr_stream
      lockd: Update the NLMv1 TEST results encoder to use struct xdr_stream
      lockd: Update the NLMv1 nlm_res results encoder to use struct xdr_stream
      lockd: Update the NLMv1 SHARE results encoder to use struct xdr_stream
      lockd: Update the NLMv4 void arguments decoder to use struct xdr_stream
      lockd: Update the NLMv4 TEST arguments decoder to use struct xdr_stream
      lockd: Update the NLMv4 LOCK arguments decoder to use struct xdr_stream
      lockd: Update the NLMv4 CANCEL arguments decoder to use struct xdr_stream
      lockd: Update the NLMv4 UNLOCK arguments decoder to use struct xdr_stream
      lockd: Update the NLMv4 nlm_res arguments decoder to use struct xdr_stream
      lockd: Update the NLMv4 SM_NOTIFY arguments decoder to use struct xdr_stream
      lockd: Update the NLMv4 SHARE arguments decoder to use struct xdr_stream
      lockd: Update the NLMv4 FREE_ALL arguments decoder to use struct xdr_stream
      lockd: Update the NLMv4 void results encoder to use struct xdr_stream
      lockd: Update the NLMv4 TEST results encoder to use struct xdr_stream
      lockd: Update the NLMv4 nlm_res results encoder to use struct xdr_stream
      lockd: Update the NLMv4 SHARE results encoder to use struct xdr_stream


 fs/lockd/svc.c             |  43 ++++
 fs/lockd/svcxdr.h          | 151 ++++++++++++++
 fs/lockd/xdr.c             | 402 ++++++++++++++++++------------------
 fs/lockd/xdr4.c            | 403 +++++++++++++++++++------------------
 include/linux/lockd/xdr.h  |   6 -
 include/linux/lockd/xdr4.h |   7 +-
 6 files changed, 610 insertions(+), 402 deletions(-)
 create mode 100644 fs/lockd/svcxdr.h

--
Chuck Lever

Comments

J. Bruce Fields May 3, 2021, 5:59 p.m. UTC | #1
On Mon, May 03, 2021 at 11:22:47AM -0400, Chuck Lever wrote:
> Same approach as what has been done for NFSv2, NFSv3, and NFSv4: XDR
> decoding and encoding functions have been updated to use xdr_stream.
> This adopts common XDR infrastructure for these functions and makes
> constructing and parsing more secure and robust.

Nothing objectionable to me on a quick skim, but it doesn't build when I
apply to 5.12 (fs/lockd/svc.c:794:9: error: implicit declaration of
function ‘svcxdr_init_encode’).  Should I take it from a git tree?

--b.

> 
> ---
> 
> Chuck Lever (29):
>       lockd: Remove stale comments
>       lockd: Create a simplified .vs_dispatch method for NLM requests
>       lockd: Common NLM XDR helpers
>       lockd: Update the NLMv1 void argument decoder to use struct xdr_stream
>       lockd: Update the NLMv1 TEST arguments decoder to use struct xdr_stream
>       lockd: Update the NLMv1 LOCK arguments decoder to use struct xdr_stream
>       lockd: Update the NLMv1 CANCEL arguments decoder to use struct xdr_stream
>       lockd: Update the NLMv1 UNLOCK arguments decoder to use struct xdr_stream
>       lockd: Update the NLMv1 nlm_res arguments decoder to use struct xdr_stream
>       lockd: Update the NLMv1 SM_NOTIFY arguments decoder to use struct xdr_stream
>       lockd: Update the NLMv1 SHARE arguments decoder to use struct xdr_stream
>       lockd: Update the NLMv1 FREE_ALL arguments decoder to use struct xdr_stream
>       lockd: Update the NLMv1 void results encoder to use struct xdr_stream
>       lockd: Update the NLMv1 TEST results encoder to use struct xdr_stream
>       lockd: Update the NLMv1 nlm_res results encoder to use struct xdr_stream
>       lockd: Update the NLMv1 SHARE results encoder to use struct xdr_stream
>       lockd: Update the NLMv4 void arguments decoder to use struct xdr_stream
>       lockd: Update the NLMv4 TEST arguments decoder to use struct xdr_stream
>       lockd: Update the NLMv4 LOCK arguments decoder to use struct xdr_stream
>       lockd: Update the NLMv4 CANCEL arguments decoder to use struct xdr_stream
>       lockd: Update the NLMv4 UNLOCK arguments decoder to use struct xdr_stream
>       lockd: Update the NLMv4 nlm_res arguments decoder to use struct xdr_stream
>       lockd: Update the NLMv4 SM_NOTIFY arguments decoder to use struct xdr_stream
>       lockd: Update the NLMv4 SHARE arguments decoder to use struct xdr_stream
>       lockd: Update the NLMv4 FREE_ALL arguments decoder to use struct xdr_stream
>       lockd: Update the NLMv4 void results encoder to use struct xdr_stream
>       lockd: Update the NLMv4 TEST results encoder to use struct xdr_stream
>       lockd: Update the NLMv4 nlm_res results encoder to use struct xdr_stream
>       lockd: Update the NLMv4 SHARE results encoder to use struct xdr_stream
> 
> 
>  fs/lockd/svc.c             |  43 ++++
>  fs/lockd/svcxdr.h          | 151 ++++++++++++++
>  fs/lockd/xdr.c             | 402 ++++++++++++++++++------------------
>  fs/lockd/xdr4.c            | 403 +++++++++++++++++++------------------
>  include/linux/lockd/xdr.h  |   6 -
>  include/linux/lockd/xdr4.h |   7 +-
>  6 files changed, 610 insertions(+), 402 deletions(-)
>  create mode 100644 fs/lockd/svcxdr.h
> 
> --
> Chuck Lever
Chuck Lever May 3, 2021, 6:02 p.m. UTC | #2
> On May 3, 2021, at 1:59 PM, J. Bruce Fields <bfields@fieldses.org> wrote:
> 
> On Mon, May 03, 2021 at 11:22:47AM -0400, Chuck Lever wrote:
>> Same approach as what has been done for NFSv2, NFSv3, and NFSv4: XDR
>> decoding and encoding functions have been updated to use xdr_stream.
>> This adopts common XDR infrastructure for these functions and makes
>> constructing and parsing more secure and robust.
> 
> Nothing objectionable to me on a quick skim, but it doesn't build when I
> apply to 5.12 (fs/lockd/svc.c:794:9: error: implicit declaration of
> function ‘svcxdr_init_encode’).  Should I take it from a git tree?

It assumes the latest v5.13, which contains svcxdr_init_encode. But it
is available in the nfsd_xdr_stream topic branch in this repo:

  git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux.git


> --b.
> 
>> 
>> ---
>> 
>> Chuck Lever (29):
>>      lockd: Remove stale comments
>>      lockd: Create a simplified .vs_dispatch method for NLM requests
>>      lockd: Common NLM XDR helpers
>>      lockd: Update the NLMv1 void argument decoder to use struct xdr_stream
>>      lockd: Update the NLMv1 TEST arguments decoder to use struct xdr_stream
>>      lockd: Update the NLMv1 LOCK arguments decoder to use struct xdr_stream
>>      lockd: Update the NLMv1 CANCEL arguments decoder to use struct xdr_stream
>>      lockd: Update the NLMv1 UNLOCK arguments decoder to use struct xdr_stream
>>      lockd: Update the NLMv1 nlm_res arguments decoder to use struct xdr_stream
>>      lockd: Update the NLMv1 SM_NOTIFY arguments decoder to use struct xdr_stream
>>      lockd: Update the NLMv1 SHARE arguments decoder to use struct xdr_stream
>>      lockd: Update the NLMv1 FREE_ALL arguments decoder to use struct xdr_stream
>>      lockd: Update the NLMv1 void results encoder to use struct xdr_stream
>>      lockd: Update the NLMv1 TEST results encoder to use struct xdr_stream
>>      lockd: Update the NLMv1 nlm_res results encoder to use struct xdr_stream
>>      lockd: Update the NLMv1 SHARE results encoder to use struct xdr_stream
>>      lockd: Update the NLMv4 void arguments decoder to use struct xdr_stream
>>      lockd: Update the NLMv4 TEST arguments decoder to use struct xdr_stream
>>      lockd: Update the NLMv4 LOCK arguments decoder to use struct xdr_stream
>>      lockd: Update the NLMv4 CANCEL arguments decoder to use struct xdr_stream
>>      lockd: Update the NLMv4 UNLOCK arguments decoder to use struct xdr_stream
>>      lockd: Update the NLMv4 nlm_res arguments decoder to use struct xdr_stream
>>      lockd: Update the NLMv4 SM_NOTIFY arguments decoder to use struct xdr_stream
>>      lockd: Update the NLMv4 SHARE arguments decoder to use struct xdr_stream
>>      lockd: Update the NLMv4 FREE_ALL arguments decoder to use struct xdr_stream
>>      lockd: Update the NLMv4 void results encoder to use struct xdr_stream
>>      lockd: Update the NLMv4 TEST results encoder to use struct xdr_stream
>>      lockd: Update the NLMv4 nlm_res results encoder to use struct xdr_stream
>>      lockd: Update the NLMv4 SHARE results encoder to use struct xdr_stream
>> 
>> 
>> fs/lockd/svc.c             |  43 ++++
>> fs/lockd/svcxdr.h          | 151 ++++++++++++++
>> fs/lockd/xdr.c             | 402 ++++++++++++++++++------------------
>> fs/lockd/xdr4.c            | 403 +++++++++++++++++++------------------
>> include/linux/lockd/xdr.h  |   6 -
>> include/linux/lockd/xdr4.h |   7 +-
>> 6 files changed, 610 insertions(+), 402 deletions(-)
>> create mode 100644 fs/lockd/svcxdr.h
>> 
>> --
>> Chuck Lever

--
Chuck Lever