Page MenuHomeFreeBSD

vm: fix swap reservation leak
ClosedPublic

Authored by mjg on Jul 23 2020, 1:35 PM.
Tags
None
Referenced Files
Unknown Object (File)
Tue, Dec 30, 11:21 PM
Unknown Object (File)
Tue, Dec 30, 2:12 PM
Unknown Object (File)
Wed, Dec 24, 6:44 PM
Unknown Object (File)
Wed, Dec 24, 4:36 PM
Unknown Object (File)
Tue, Dec 23, 1:08 PM
Unknown Object (File)
Dec 14 2025, 7:22 AM
Unknown Object (File)
Dec 7 2025, 12:50 PM
Unknown Object (File)
Dec 2 2025, 10:05 AM
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