On Mon, Aug 29, 2022, Kyle Huey wrote:
@@ -1246,6 +1246,21 @@ static int copy_uabi_to_xstate(struct fpstate *fpstate, const void *kbuf, } }
- /*
* Update the user protection key storage. Allow KVM to
* pass in a NULL pkru pointer if the mask bit is unset
* for its legacy ABI behavior.
*/
- if (pkru)
*pkru = 0;
- if (hdr.xfeatures & XFEATURE_MASK_PKRU) {
struct pkru_state *xpkru;
xpkru = __raw_xsave_addr(xsave, XFEATURE_PKRU);
*pkru = xpkru->pkru;
- }
What about writing this as:
if (hdr.xfeatures & XFEATURE_MASK_PKRU) { ...
*pkru = xpkru->pkru; } else if (pkru) { *pkru = 0; }
to make it slightly more obvious that @pkru must be non-NULL if the feature flag is enabled?
Or we could be paranoid, though I'm not sure this is worthwhile.
if ((hdr.xfeatures & XFEATURE_MASK_PKRU) && !WARN_ON_ONCE(!pkru)) { ...
*pkru = xpkru->pkru; } else if (pkru) { *pkru = 0; }
Otherwise, looks good from a KVM perspective. Thanks!