Messages in this thread | | | Date | Mon, 6 Dec 2021 20:56:12 -0800 | From | Kees Cook <> | Subject | Re: [PATCH] block: switch to atomic_t for request references |
| |
On Mon, Dec 06, 2021 at 04:13:00PM -0800, Linus Torvalds wrote: > On Mon, Dec 6, 2021 at 3:28 PM Kees Cook <keescook@chromium.org> wrote: > > > > I'm not arguing for refcount_t -- I'm arguing for an API that isn't a > > regression of features that have been protecting the kernel from bugs. > > Maybe somebody could actually just fix refcount_t instead. Somebody > who cares about that currently horrendously bad interface. > > Fix it to not do the fundamentally broken saturation that actively > destroys state: fix it to have a safe "try to increment", instead of > an unsafe "increment and do bad things".
There would need to be a pretty hefty transition -- there are a lot of refcount_inc() uses that would need checking and error handling (which might not be sane to add to ancient drivers):
2 block 2 crypto 2 ipc 2 virt 3 mm 4 sound 5 rust 10 arch 13 security 31 kernel 88 include 192 fs 192 net 358 drivers
refcount_inc_not_zero() already uses __must_check, etc.
I'm not afraid of giant transitions, but this could be pretty tricky. I'm open to ideas. Maybe a treewide change of refcount_inc() -> refcount_inc_saturating() and then start fixing all the _unsafe() cases where a sensible error path could be created and tested?
-- Kees Cook
| |