Page MenuHomeFreeBSD

vm: fix swap reservation leak
ClosedPublic

Authored by mjg on Jul 23 2020, 1:35 PM.
Tags
None
Referenced Files
F82071613: D25787.id74866.diff
Thu, Apr 25, 6:15 AM
F82037129: D25787.id74878.diff
Wed, Apr 24, 9:08 PM
Unknown Object (File)
Wed, Apr 24, 10:25 AM
Unknown Object (File)
Thu, Apr 18, 1:36 PM
Unknown Object (File)
Thu, Apr 18, 8:28 AM
Unknown Object (File)
Tue, Apr 16, 9:37 AM
Unknown Object (File)
Tue, Apr 16, 5:41 AM
Unknown Object (File)
Mar 7 2024, 11:45 PM
Subscribers

Details

Summary

If per-uid limit is exceeded, the cleanup fails to subtract from the global counter.

While here cleanup the code.

Diff Detail

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

Event Timeline

mjg requested review of this revision.Jul 23 2020, 1:35 PM

Since you are doing cleanups, perhaps change the return type to bool, there and for swap_reserve().

sys/vm/swap_pager.c
247 ↗(On Diff #74840)

Please invert all conditions and s/||/&&/

  • way more refactoring

I'm working on a patch to introduce per-cpu counting here so this serves as a good prep.

sys/vm/swap_pager.c
216 ↗(On Diff #74866)

priv_check() != 0

218 ↗(On Diff #74866)

Might be, make this KASSERT

263 ↗(On Diff #74866)

Move oc declaration above statics.

284 ↗(On Diff #74866)

if (r > s && (oc & _ALLOW_NONWIRED) != 0) {

292 ↗(On Diff #74866)

Again, make this KASSERT

299 ↗(On Diff #74866)

And this

This revision is now accepted and ready to land.Jul 24 2020, 12:09 PM