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 | const struct qstr * name; | 348 | const struct qstr * name; |
| 349 | const struct nfs_server *server; /* Needed for ID mapping */ | 349 | const struct nfs_server *server; /* Needed for ID mapping */ |
| 350 | const u32 * bitmask; | 350 | const u32 * bitmask; |
| 351 | const u32 * open_bitmap; | ||
| 351 | __u32 claim; | 352 | __u32 claim; |
| 352 | struct nfs4_sequence_args seq_args; | 353 | struct nfs4_sequence_args seq_args; |
| 353 | }; | 354 | }; |