2012-08-20 10:45:40

by Marina Makienko

[permalink] [raw]
Subject: [PATCH] staging: octeon: Add prevent NAPI from scheduling

Code inspection shows that this can
only be triggered by calling napi_enable() without
napi_disable().

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Marina Makienko <[email protected]>
---
drivers/staging/octeon/ethernet-rx.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/drivers/staging/octeon/ethernet-rx.c b/drivers/staging/octeon/ethernet-rx.c
index 34afc16..db81613 100644
--- a/drivers/staging/octeon/ethernet-rx.c
+++ b/drivers/staging/octeon/ethernet-rx.c
@@ -560,4 +560,5 @@ void cvm_oct_rx_shutdown(void)
/* Shutdown all of the NAPIs */
for_each_possible_cpu(i)
netif_napi_del(&cvm_oct_napi[i].napi);
+ napi_disable(&cvm_oct_napi[i].napi);
}
--
1.7.7


2012-08-20 16:30:32

by David Daney

[permalink] [raw]
Subject: Re: [PATCH] staging: octeon: Add prevent NAPI from scheduling

On 08/20/2012 03:41 AM, Marina Makienko wrote:
> Code inspection shows that this can
> only be triggered by calling napi_enable() without
> napi_disable().
>
> Found by Linux Driver Verification project (linuxtesting.org).
>
> Signed-off-by: Marina Makienko <[email protected]>
> ---
> drivers/staging/octeon/ethernet-rx.c | 1 +
> 1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/staging/octeon/ethernet-rx.c b/drivers/staging/octeon/ethernet-rx.c
> index 34afc16..db81613 100644
> --- a/drivers/staging/octeon/ethernet-rx.c
> +++ b/drivers/staging/octeon/ethernet-rx.c
> @@ -560,4 +560,5 @@ void cvm_oct_rx_shutdown(void)
> /* Shutdown all of the NAPIs */
> for_each_possible_cpu(i)
> netif_napi_del(&cvm_oct_napi[i].napi);
> + napi_disable(&cvm_oct_napi[i].napi);


Does the order of netif_napi_del() and napi_disable() matter? If so,
does this patch have the correct ordering?

I don't really want to apply the patch until we know the answer to these
two questions.

David Daney

2012-08-20 17:00:38

by Max Filippov

[permalink] [raw]
Subject: Re: [PATCH] staging: octeon: Add prevent NAPI from scheduling

On Mon, Aug 20, 2012 at 2:41 PM, Marina Makienko <[email protected]> wrote:
> Code inspection shows that this can
> only be triggered by calling napi_enable() without
> napi_disable().
>
> Found by Linux Driver Verification project (linuxtesting.org).
>
> Signed-off-by: Marina Makienko <[email protected]>
> ---
> drivers/staging/octeon/ethernet-rx.c | 1 +
> 1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/staging/octeon/ethernet-rx.c b/drivers/staging/octeon/ethernet-rx.c
> index 34afc16..db81613 100644
> --- a/drivers/staging/octeon/ethernet-rx.c
> +++ b/drivers/staging/octeon/ethernet-rx.c
> @@ -560,4 +560,5 @@ void cvm_oct_rx_shutdown(void)
> /* Shutdown all of the NAPIs */
> for_each_possible_cpu(i)
> netif_napi_del(&cvm_oct_napi[i].napi);
> + napi_disable(&cvm_oct_napi[i].napi);
> }

Looks like napi_disable is meant to be inside for_each_possible_cpu loop,
but curly braces are missing.

--
Thanks.
-- Max

2012-08-21 07:52:32

by Marina Makienko

[permalink] [raw]
Subject: [PATCH] staging: octeon: Add prevent NAPI from scheduling IN-REPLY-TO:

There are netif_napi_add() and napi_enable() in for_each_possible_cpu
loop in function cvm_oct_rx_initialize(). So it's logical to add
napi_disable() in for_each_possible_cpu loop in function
cvm_oct_rx_shutdown().

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Marina Makienko <[email protected]>
---
drivers/staging/octeon/ethernet-rx.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/drivers/staging/octeon/ethernet-rx.c b/drivers/staging/octeon/ethernet-rx.c
index 34afc16..e5b62fc 100644
--- a/drivers/staging/octeon/ethernet-rx.c
+++ b/drivers/staging/octeon/ethernet-rx.c
@@ -558,6 +558,8 @@ void cvm_oct_rx_shutdown(void)
{
int i;
/* Shutdown all of the NAPIs */
- for_each_possible_cpu(i)
+ for_each_possible_cpu(i) {
netif_napi_del(&cvm_oct_napi[i].napi);
+ napi_disable(&cvm_oct_napi[i].napi);
+ }
}
--
1.7.7

2012-08-21 11:23:06

by Marina Makienko

[permalink] [raw]
Subject: [PATCH] staging: octeon: Add prevent NAPI from scheduling IN-REPLY-TO:

Please ignore previous message.

--
1.7.7