2019-03-07 09:50:30

by Christophe Leroy

[permalink] [raw]
Subject: [PATCH] powerpc/highmem: change BUG_ON() to WARN_ON()

In arch/powerpc/mm/highmem.c, BUG_ON() is called only when
CONFIG_DEBUG_HIGHMEM is selected, this means the BUG_ON() is
not vital and can be replaced by a a WARN_ON

At the sametime, use IS_ENABLED() instead of #ifdef to clean a bit.

Signed-off-by: Christophe Leroy <[email protected]>
---
arch/powerpc/mm/highmem.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/arch/powerpc/mm/highmem.c b/arch/powerpc/mm/highmem.c
index 82a0e37557a5..b68c9f20fbdf 100644
--- a/arch/powerpc/mm/highmem.c
+++ b/arch/powerpc/mm/highmem.c
@@ -43,9 +43,7 @@ void *kmap_atomic_prot(struct page *page, pgprot_t prot)
type = kmap_atomic_idx_push();
idx = type + KM_TYPE_NR*smp_processor_id();
vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
-#ifdef CONFIG_DEBUG_HIGHMEM
- BUG_ON(!pte_none(*(kmap_pte-idx)));
-#endif
+ WARN_ON(IS_ENABLED(CONFIG_DEBUG_HIGHMEM) && !pte_none(*(kmap_pte - idx)));
__set_pte_at(&init_mm, vaddr, kmap_pte-idx, mk_pte(page, prot), 1);
local_flush_tlb_page(NULL, vaddr);

@@ -56,7 +54,7 @@ EXPORT_SYMBOL(kmap_atomic_prot);
void __kunmap_atomic(void *kvaddr)
{
unsigned long vaddr = (unsigned long) kvaddr & PAGE_MASK;
- int type __maybe_unused;
+ int type;

if (vaddr < __fix_to_virt(FIX_KMAP_END)) {
pagefault_enable();
@@ -66,12 +64,11 @@ void __kunmap_atomic(void *kvaddr)

type = kmap_atomic_idx();

-#ifdef CONFIG_DEBUG_HIGHMEM
- {
+ if (IS_ENABLED(CONFIG_DEBUG_HIGHMEM)) {
unsigned int idx;

idx = type + KM_TYPE_NR * smp_processor_id();
- BUG_ON(vaddr != __fix_to_virt(FIX_KMAP_BEGIN + idx));
+ WARN_ON(vaddr != __fix_to_virt(FIX_KMAP_BEGIN + idx));

/*
* force other mappings to Oops if they'll try to access
@@ -80,7 +77,6 @@ void __kunmap_atomic(void *kvaddr)
pte_clear(&init_mm, vaddr, kmap_pte-idx);
local_flush_tlb_page(NULL, vaddr);
}
-#endif

kmap_atomic_idx_pop();
pagefault_enable();
--
2.13.3



2019-03-21 05:31:34

by Michael Ellerman

[permalink] [raw]
Subject: Re: [PATCH] powerpc/highmem: change BUG_ON() to WARN_ON()

Christophe Leroy <[email protected]> writes:
> In arch/powerpc/mm/highmem.c, BUG_ON() is called only when
> CONFIG_DEBUG_HIGHMEM is selected, this means the BUG_ON() is
> not vital and can be replaced by a a WARN_ON
>
> At the sametime, use IS_ENABLED() instead of #ifdef to clean a bit.
>
> Signed-off-by: Christophe Leroy <[email protected]>
> ---
> arch/powerpc/mm/highmem.c | 12 ++++--------
> 1 file changed, 4 insertions(+), 8 deletions(-)
>
> diff --git a/arch/powerpc/mm/highmem.c b/arch/powerpc/mm/highmem.c
> index 82a0e37557a5..b68c9f20fbdf 100644
> --- a/arch/powerpc/mm/highmem.c
> +++ b/arch/powerpc/mm/highmem.c
> @@ -56,7 +54,7 @@ EXPORT_SYMBOL(kmap_atomic_prot);
> void __kunmap_atomic(void *kvaddr)
> {
> unsigned long vaddr = (unsigned long) kvaddr & PAGE_MASK;
> - int type __maybe_unused;
> + int type;

Why don't we move type into the block below.

eg:

> @@ -66,12 +64,11 @@ void __kunmap_atomic(void *kvaddr)
>
- type = kmap_atomic_idx();
>
> -#ifdef CONFIG_DEBUG_HIGHMEM
> - {
> + if (IS_ENABLED(CONFIG_DEBUG_HIGHMEM)) {
int type = kmap_atomic_idx();
> unsigned int idx;
>
> idx = type + KM_TYPE_NR * smp_processor_id();
> - BUG_ON(vaddr != __fix_to_virt(FIX_KMAP_BEGIN + idx));
> + WARN_ON(vaddr != __fix_to_virt(FIX_KMAP_BEGIN + idx));


cheers

2019-03-21 06:01:09

by Christophe Leroy

[permalink] [raw]
Subject: Re: [PATCH] powerpc/highmem: change BUG_ON() to WARN_ON()



Le 21/03/2019 à 06:29, Michael Ellerman a écrit :
> Christophe Leroy <[email protected]> writes:
>> In arch/powerpc/mm/highmem.c, BUG_ON() is called only when
>> CONFIG_DEBUG_HIGHMEM is selected, this means the BUG_ON() is
>> not vital and can be replaced by a a WARN_ON
>>
>> At the sametime, use IS_ENABLED() instead of #ifdef to clean a bit.
>>
>> Signed-off-by: Christophe Leroy <[email protected]>
>> ---
>> arch/powerpc/mm/highmem.c | 12 ++++--------
>> 1 file changed, 4 insertions(+), 8 deletions(-)
>>
>> diff --git a/arch/powerpc/mm/highmem.c b/arch/powerpc/mm/highmem.c
>> index 82a0e37557a5..b68c9f20fbdf 100644
>> --- a/arch/powerpc/mm/highmem.c
>> +++ b/arch/powerpc/mm/highmem.c
>> @@ -56,7 +54,7 @@ EXPORT_SYMBOL(kmap_atomic_prot);
>> void __kunmap_atomic(void *kvaddr)
>> {
>> unsigned long vaddr = (unsigned long) kvaddr & PAGE_MASK;
>> - int type __maybe_unused;
>> + int type;
>
> Why don't we move type into the block below.

Yes you're right, when Mathieu introduced the __maybe_unused, I was
wrongly thinging that kmap_atomic_idx() was doing something important
that had to be done also when DEBUG was not selected, but indeed it does
nothing else than returning the type.

I'll send a new patch.

Christophe

>
> eg:
>
>> @@ -66,12 +64,11 @@ void __kunmap_atomic(void *kvaddr)
>>
> - type = kmap_atomic_idx();
>>
>> -#ifdef CONFIG_DEBUG_HIGHMEM
>> - {
>> + if (IS_ENABLED(CONFIG_DEBUG_HIGHMEM)) {
> int type = kmap_atomic_idx();
>> unsigned int idx;
>>
>> idx = type + KM_TYPE_NR * smp_processor_id();
>> - BUG_ON(vaddr != __fix_to_virt(FIX_KMAP_BEGIN + idx));
>> + WARN_ON(vaddr != __fix_to_virt(FIX_KMAP_BEGIN + idx));
>
>
> cheers
>

2019-03-21 10:08:31

by Michael Ellerman

[permalink] [raw]
Subject: Re: [PATCH] powerpc/highmem: change BUG_ON() to WARN_ON()

Christophe Leroy <[email protected]> writes:

> Le 21/03/2019 à 06:29, Michael Ellerman a écrit :
>> Christophe Leroy <[email protected]> writes:
>>> In arch/powerpc/mm/highmem.c, BUG_ON() is called only when
>>> CONFIG_DEBUG_HIGHMEM is selected, this means the BUG_ON() is
>>> not vital and can be replaced by a a WARN_ON
>>>
>>> At the sametime, use IS_ENABLED() instead of #ifdef to clean a bit.
>>>
>>> Signed-off-by: Christophe Leroy <[email protected]>
>>> ---
>>> arch/powerpc/mm/highmem.c | 12 ++++--------
>>> 1 file changed, 4 insertions(+), 8 deletions(-)
>>>
>>> diff --git a/arch/powerpc/mm/highmem.c b/arch/powerpc/mm/highmem.c
>>> index 82a0e37557a5..b68c9f20fbdf 100644
>>> --- a/arch/powerpc/mm/highmem.c
>>> +++ b/arch/powerpc/mm/highmem.c
>>> @@ -56,7 +54,7 @@ EXPORT_SYMBOL(kmap_atomic_prot);
>>> void __kunmap_atomic(void *kvaddr)
>>> {
>>> unsigned long vaddr = (unsigned long) kvaddr & PAGE_MASK;
>>> - int type __maybe_unused;
>>> + int type;
>>
>> Why don't we move type into the block below.
>
> Yes you're right, when Mathieu introduced the __maybe_unused, I was
> wrongly thinging that kmap_atomic_idx() was doing something important
> that had to be done also when DEBUG was not selected, but indeed it does
> nothing else than returning the type.
>
> I'll send a new patch.

I can just fix it up when applying.

cheers

2019-03-21 10:17:06

by Christophe Leroy

[permalink] [raw]
Subject: Re: [PATCH] powerpc/highmem: change BUG_ON() to WARN_ON()



Le 21/03/2019 à 11:07, Michael Ellerman a écrit :
> Christophe Leroy <[email protected]> writes:
>
>> Le 21/03/2019 à 06:29, Michael Ellerman a écrit :
>>> Christophe Leroy <[email protected]> writes:
>>>> In arch/powerpc/mm/highmem.c, BUG_ON() is called only when
>>>> CONFIG_DEBUG_HIGHMEM is selected, this means the BUG_ON() is
>>>> not vital and can be replaced by a a WARN_ON
>>>>
>>>> At the sametime, use IS_ENABLED() instead of #ifdef to clean a bit.
>>>>
>>>> Signed-off-by: Christophe Leroy <[email protected]>
>>>> ---
>>>> arch/powerpc/mm/highmem.c | 12 ++++--------
>>>> 1 file changed, 4 insertions(+), 8 deletions(-)
>>>>
>>>> diff --git a/arch/powerpc/mm/highmem.c b/arch/powerpc/mm/highmem.c
>>>> index 82a0e37557a5..b68c9f20fbdf 100644
>>>> --- a/arch/powerpc/mm/highmem.c
>>>> +++ b/arch/powerpc/mm/highmem.c
>>>> @@ -56,7 +54,7 @@ EXPORT_SYMBOL(kmap_atomic_prot);
>>>> void __kunmap_atomic(void *kvaddr)
>>>> {
>>>> unsigned long vaddr = (unsigned long) kvaddr & PAGE_MASK;
>>>> - int type __maybe_unused;
>>>> + int type;
>>>
>>> Why don't we move type into the block below.
>>
>> Yes you're right, when Mathieu introduced the __maybe_unused, I was
>> wrongly thinging that kmap_atomic_idx() was doing something important
>> that had to be done also when DEBUG was not selected, but indeed it does
>> nothing else than returning the type.
>>
>> I'll send a new patch.
>
> I can just fix it up when applying.
>

Ok, thanks

Christophe


2019-04-21 14:22:08

by Michael Ellerman

[permalink] [raw]
Subject: Re: powerpc/highmem: change BUG_ON() to WARN_ON()

On Thu, 2019-03-07 at 09:47:50 UTC, Christophe Leroy wrote:
> In arch/powerpc/mm/highmem.c, BUG_ON() is called only when
> CONFIG_DEBUG_HIGHMEM is selected, this means the BUG_ON() is
> not vital and can be replaced by a a WARN_ON
>
> At the sametime, use IS_ENABLED() instead of #ifdef to clean a bit.
>
> Signed-off-by: Christophe Leroy <[email protected]>

Applied to powerpc next, thanks.

https://git.kernel.org/powerpc/c/6c84f8c5cbfb4bf728f88296bc035c4a

cheers