On Tue, Dec 7, 2021 at 2:30 AM Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote: > > On Mon, Dec 06, 2021 at 04:13:00PM -0800, Linus Torvalds wrote: > > > IOW, I think that "try_get_page()" function is basically the *much* > > superior version of what is currently a broken "refcount_inc()". > > That places the burden of the unlikely overflow case on the user. Now > every driver author needs to consider the overflow case and have a > corresponding error path. How many bugs will that introduce? Did you even *look* at the patch that started this discussion? The patch replaced refcount_t, made for no more complex code. > Why is saturation; iow. leaking the memory, a worse option than having > bad/broken/never-tested error paths all over the kernel? .. which is why I'm fine with refcount_t - for driver reference counts etc sysfs behavior etc. What I am *NOT* fine with is somebody then piping up claimign that refcount_t is "better" than doing it properly by hand, and complaining about patches that replace it with something else. See the difference here? 'refcount_t' is fundamentally broken, cannot handle overflows properly, and is *designed* to do that. You even seem to make excuses for that very design. And that "lazy mans overflow protection" is fine if we're talking random code, and are talking maintainers who doesn't want to deal with it. But that is also why I do not EVER want to hear "no, don't convert away from refcount_t". Can you really not understand my dislike of a data type that is fundamentally a lazy shortcut and intentionally hides error cases with leaks? Doing it properly is always the better option, and "refcount_t" really *fundamentally* can never do it properly. It doesn't have the proper interfaces, and it doesn't return enough information to recover. I'm not arguing that we have to replace every refcount_t user. But I *am* arguing that if somebody wants to replace their refcount_t with something better - whatever the reason - they had better not hear the mindless whining about it. Linus