diff options
author | Anna Schumaker <Anna.Schumaker@Netapp.com> | 2023-06-09 15:26:25 -0400 |
---|---|---|
committer | Anna Schumaker <Anna.Schumaker@Netapp.com> | 2023-08-23 15:58:47 -0400 |
commit | 303a78052091c81e9003915c521fdca1c7e117af (patch) | |
tree | 2616e0e3ddc48fee94929cf7e1220013b0e2377f /net/sunrpc | |
parent | 8d18f6c5bb864d97a730f471c56cdecf313efe64 (diff) |
NFSv4.2: Rework scratch handling for READ_PLUS (again)
I found that the read code might send multiple requests using the same
nfs_pgio_header, but nfs4_proc_read_setup() is only called once. This is
how we ended up occasionally double-freeing the scratch buffer, but also
means we set a NULL pointer but non-zero length to the xdr scratch
buffer. This results in an oops the first time decoding needs to copy
something to scratch, which frequently happens when decoding READ_PLUS
hole segments.
I fix this by moving scratch handling into the pageio read code. I
provide a function to allocate scratch space for decoding read replies,
and free the scratch buffer when the nfs_pgio_header is freed.
Fixes: fbd2a05f29a9 (NFSv4.2: Rework scratch handling for READ_PLUS)
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Diffstat (limited to 'net/sunrpc')
0 files changed, 0 insertions, 0 deletions