Messages in this thread | | | From | Kees Cook <> | Date | Tue, 27 Jun 2017 11:34:12 -0700 | Subject | Re: [PATCH] kref: Avoid null pointer dereference after WARN |
| |
On Tue, Jun 27, 2017 at 12:06 AM, Greg Kroah-Hartman <gregkh@linuxfoundation.org> wrote: > On Mon, Jun 26, 2017 at 08:52:15PM -0700, Kees Cook wrote: >> From: Daniel Micay <danielmicay@gmail.com> >> >> The WARN_ON() checking for a NULL release pointer should be a BUG() >> since continuing with a NULL release pointer will lead to a NULL >> pointer dereference anyway. >> >> The kref_put() case is extracted from PaX, and Kees Cook noted it should >> be extended to the other two cases. >> >> Signed-off-by: Daniel Micay <danielmicay@gmail.com> >> [kees: clarify commit log] >> Signed-off-by: Kees Cook <keescook@chromium.org> >> --- >> include/linux/kref.h | 6 +++--- >> 1 file changed, 3 insertions(+), 3 deletions(-) >> >> diff --git a/include/linux/kref.h b/include/linux/kref.h >> index f4156f88f557..82a2c225eae3 100644 >> --- a/include/linux/kref.h >> +++ b/include/linux/kref.h >> @@ -66,7 +66,7 @@ static inline void kref_get(struct kref *kref) >> */ >> static inline int kref_put(struct kref *kref, void (*release)(struct kref *kref)) >> { >> - WARN_ON(release == NULL); >> + BUG_ON(release == NULL); > > I remember one complaint was that WARN_ON was "huge" and this bloated > the kernel code a lot. But then that got fixed up. Is BUG_ON going to > cause the same complaint again?
It used to be that WARN was much larger than BUG, but Peter Z fixed[1] that recently. BUG is very small (on x86 a single instruction). I'll send a v2 with the .text comparison.
-Kees
[1] 9a93848fe787 ("x86/debug: Implement __WARN() using UD0")
-- Kees Cook Pixel Security
| |