The open recovery code does not need to request a new value for the mdsthreshold, and so does not allocate a struct nfs4_threshold. The problem is that encode_getfattr_open() will still request an mdsthreshold, and so we end up Oopsing in decode_attr_mdsthreshold. This patch fixes encode_getfattr_open so that it doesn't request an mdsthreshold when the caller isn't asking for one. It also fixes decode_attr_mdsthreshold so that it errors if the server returns an mdsthreshold that we didn't ask for (instead of Oopsing).
Showing the changes to include/linux (1 of 4 files). Show all
Unified · Split
| @@ -348,6 +348,7 @@ struct nfs_openargs { · 347 unmodified lines | ||
| 348 | 348 | const struct qstr * name; |
| 349 | 349 | const struct nfs_server *server; /* Needed for ID mapping */ |
| 350 | 350 | const u32 * bitmask; |
| 351 | + const u32 * open_bitmap; | |
| 351 | 352 | __u32 claim; |
| 352 | 353 | struct nfs4_sequence_args seq_args; |
| 353 | 354 | }; |