Re: [PATCH 2/4] staging: most: Replace calls to BUG_ON() with WARN_ONCE() and return.

From: Greg KH
Date: Thu Mar 01 2018 - 11:21:35 EST


On Fri, Feb 23, 2018 at 11:58:33PM -0800, Quytelda Kahja wrote:
> Replace calls to BUG_ON() used to check for NULL pointers with WARN_ONCE()
> followed by a return.

Are you sure this will work?

>
> Signed-off-by: Quytelda Kahja <quytelda@xxxxxxxxxxx>
> ---
> drivers/staging/most/core.c | 13 ++++++++++---
> 1 file changed, 10 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/staging/most/core.c b/drivers/staging/most/core.c
> index 18157dd80324..3f65390a6e17 100644
> --- a/drivers/staging/most/core.c
> +++ b/drivers/staging/most/core.c
> @@ -916,7 +916,11 @@ static void arm_mbo(struct mbo *mbo)
> unsigned long flags;
> struct most_channel *c;
>
> - BUG_ON((!mbo) || (!mbo->context));
> + if (WARN_ONCE(!mbo || !mbo->context,
> + "Bad mbo or missing channel reference.\n")) {
> + return;

How is the code supposed to recover from this major problem?

> + }
> +
> c = mbo->context;
>
> if (c->is_poisoned) {
> @@ -1001,7 +1005,7 @@ static int arm_mbo_chain(struct most_channel *c, int dir,
> void most_submit_mbo(struct mbo *mbo)
> {
> if (WARN_ONCE(!mbo || !mbo->context,
> - "bad mbo or missing channel reference\n"))
> + "Bad mbo or missing channel reference.\n"))

You did something different here that you did not describe in your
changelog :(

thanks,

greg k-h