Page MenuHomeFreeBSD

posixshm: fix setting of shm_flags
ClosedPublic

Authored by kevans on Aug 31 2020, 3:27 AM.
Tags
None
Referenced Files
F82155849: D26242.id76386.diff
Fri, Apr 26, 12:40 AM
F82153337: D26242.id76409.diff
Fri, Apr 26, 12:11 AM
F82148961: D26242.id.diff
Thu, Apr 25, 11:27 PM
Unknown Object (File)
Thu, Apr 25, 5:59 PM
Unknown Object (File)
Thu, Apr 25, 4:07 AM
Unknown Object (File)
Sun, Apr 21, 12:46 AM
Unknown Object (File)
Sun, Apr 21, 12:46 AM
Unknown Object (File)
Sun, Apr 21, 12:46 AM
Subscribers

Details

Summary

Noted in D24652, we currently set shmfd->shm_flags on every shm_open()/shm_open2(). This wasn't properly thought out; one shouldn't be able to specify incompatible flags on subsequent opens of non-anon shm.

Move setting of shm_flags explicitly to the two places shmfd are created, as we do with seals, and validate when we're opening a pre-existing mapping that we've either passed no flags or we've passed the exact same flags as the last time.

I'm unsure if it makes more sense to drop the 'shmfd->shm_flags != 0` condition and forcing the exact same flags on subsequent opens. That seems like it'd make it a little harder to use, and in theory specifying shmflags = 0 would be a sensible convention for "whatever was already established".

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

(I won't be jumping to commit anything to avoid creating another merge conflict for the non-transparent super page patch)

This is fine, and it does not conflict with large pages patch.
More, there is a reason why I prefer to get this in before the final testing for large pages.

This revision is now accepted and ready to land.Aug 31 2020, 7:20 AM
This revision was automatically updated to reflect the committed changes.