Messages in this thread | | | Date | Sun, 15 Dec 2019 11:20:17 -0800 | From | Stephen Hemminger <> | Subject | Re: [PATCH] hdlcdrv: replace assertion with recovery code |
| |
On Sun, 15 Dec 2019 11:58:41 -0600 Aditya Pakki <pakki001@umn.edu> wrote:
> In hdlcdrv_register, failure to register the driver causes a crash. > However, by returning the error to the caller in case ops is NULL > can avoid the crash. The patch fixes this issue. > > Signed-off-by: Aditya Pakki <pakki001@umn.edu> > --- > drivers/net/hamradio/hdlcdrv.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/hamradio/hdlcdrv.c b/drivers/net/hamradio/hdlcdrv.c > index df495b5595f5..38e5d1e54800 100644 > --- a/drivers/net/hamradio/hdlcdrv.c > +++ b/drivers/net/hamradio/hdlcdrv.c > @@ -687,7 +687,8 @@ struct net_device *hdlcdrv_register(const struct hdlcdrv_ops *ops, > struct hdlcdrv_state *s;h > int err; > > - BUG_ON(ops == NULL); > + if (!ops) > + return ERR_PTR(-EINVAL); > > if (privsize < sizeof(struct hdlcdrv_state)) > privsize = sizeof(struct hdlcdrv_state);
It is good to remove BUG_ON's but this is not a good way to fix it. The original code was being over paranoid. There are only 3 places this function is called in the current kernel and all pass a valid pointer. Better just remove the BUG_ON all together; it is not worth carrying bug checks for "some day somebody might add broken code".
| |