Page MenuHomeFreeBSD

vm: fix swap reservation leak
ClosedPublic

Authored by mjg on Jul 23 2020, 1:35 PM.
Tags
None
Referenced Files
F81440609: D25787.diff
Tue, Apr 16, 9:37 AM
F81428974: D25787.id74877.diff
Tue, Apr 16, 5:41 AM
Unknown Object (File)
Mar 7 2024, 11:45 PM
Unknown Object (File)
Feb 20 2024, 3:16 AM
Unknown Object (File)
Jan 1 2024, 10:07 PM
Unknown Object (File)
Dec 20 2023, 8:18 AM
Unknown Object (File)
Nov 14 2023, 9:53 AM
Unknown Object (File)
Nov 8 2023, 12:52 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