linux-parisc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] parisc: Increase the usage check of kmalloc allocated object a
@ 2022-09-14  6:04 Li zeming
  2022-09-14  6:18 ` Helge Deller
  0 siblings, 1 reply; 6+ messages in thread
From: Li zeming @ 2022-09-14  6:04 UTC (permalink / raw)
  To: James.Bottomley, deller; +Cc: linux-parisc, linux-kernel, Li zeming

In the case of memory allocation failure, no alignment operation is
required.

Signed-off-by: Li zeming <zeming@nfschina.com>
---
 drivers/parisc/iosapic.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/parisc/iosapic.c b/drivers/parisc/iosapic.c
index 3a8c98615634..33de438916d3 100644
--- a/drivers/parisc/iosapic.c
+++ b/drivers/parisc/iosapic.c
@@ -229,7 +229,9 @@ static struct irt_entry *iosapic_alloc_irt(int num_entries)
 	 * 4-byte alignment on 32-bit kernels
 	 */
 	a = (unsigned long)kmalloc(sizeof(struct irt_entry) * num_entries + 8, GFP_KERNEL);
-	a = (a + 7UL) & ~7UL;
+	if (a)
+		a = (a + 7UL) & ~7UL;
+
 	return (struct irt_entry *)a;
 }
 
-- 
2.18.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] parisc: Increase the usage check of kmalloc allocated object a
  2022-09-14  6:04 [PATCH] parisc: Increase the usage check of kmalloc allocated object a Li zeming
@ 2022-09-14  6:18 ` Helge Deller
  2022-09-14  6:43   ` Rolf Eike Beer
  0 siblings, 1 reply; 6+ messages in thread
From: Helge Deller @ 2022-09-14  6:18 UTC (permalink / raw)
  To: Li zeming, James.Bottomley; +Cc: linux-parisc, linux-kernel

On 9/14/22 08:04, Li zeming wrote:
> In the case of memory allocation failure, no alignment operation is
> required.
>
> Signed-off-by: Li zeming <zeming@nfschina.com>
> ---
>   drivers/parisc/iosapic.c | 4 +++-
>   1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/parisc/iosapic.c b/drivers/parisc/iosapic.c
> index 3a8c98615634..33de438916d3 100644
> --- a/drivers/parisc/iosapic.c
> +++ b/drivers/parisc/iosapic.c
> @@ -229,7 +229,9 @@ static struct irt_entry *iosapic_alloc_irt(int num_entries)
>   	 * 4-byte alignment on 32-bit kernels
>   	 */
>   	a = (unsigned long)kmalloc(sizeof(struct irt_entry) * num_entries + 8, GFP_KERNEL);
> -	a = (a + 7UL) & ~7UL;
> +	if (a)
> +		a = (a + 7UL) & ~7UL;
> +

As you said, the adjustment isn't required, but it's still ok.
So I think the additional "if" isn't necessary and so I'm not
applying your patch.

Anyway, thanks for your help to try to improve the code!

Helge


>   	return (struct irt_entry *)a;
>   }
>


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] parisc: Increase the usage check of kmalloc allocated object a
  2022-09-14  6:18 ` Helge Deller
@ 2022-09-14  6:43   ` Rolf Eike Beer
  2022-09-14  9:04     ` Helge Deller
  0 siblings, 1 reply; 6+ messages in thread
From: Rolf Eike Beer @ 2022-09-14  6:43 UTC (permalink / raw)
  To: Li zeming, James.Bottomley, Helge Deller; +Cc: linux-parisc, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1722 bytes --]

Am Mittwoch, 14. September 2022, 08:18:19 CEST schrieb Helge Deller:
> On 9/14/22 08:04, Li zeming wrote:
> > In the case of memory allocation failure, no alignment operation is
> > required.
> > 
> > Signed-off-by: Li zeming <zeming@nfschina.com>
> > ---
> > 
> >   drivers/parisc/iosapic.c | 4 +++-
> >   1 file changed, 3 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/parisc/iosapic.c b/drivers/parisc/iosapic.c
> > index 3a8c98615634..33de438916d3 100644
> > --- a/drivers/parisc/iosapic.c
> > +++ b/drivers/parisc/iosapic.c
> > @@ -229,7 +229,9 @@ static struct irt_entry *iosapic_alloc_irt(int
> > num_entries)> 
> >   	 * 4-byte alignment on 32-bit kernels
> >   	 */
> >   	
> >   	a = (unsigned long)kmalloc(sizeof(struct irt_entry) * num_entries 
+ 8,
> >   	GFP_KERNEL);> 
> > -	a = (a + 7UL) & ~7UL;
> > +	if (a)
> > +		a = (a + 7UL) & ~7UL;
> > +
> 
> As you said, the adjustment isn't required, but it's still ok.
> So I think the additional "if" isn't necessary and so I'm not
> applying your patch.
> 
> Anyway, thanks for your help to try to improve the code!

I was about to say the same, but from looking at the code I don't think what 
is in there is correct either. The comment seems outdated, because 
__assume_kmalloc_alignment, which is __alignof__(unsigned long long). This 
code is untouched for the entire git history, so maybe we can just change the 
whole thing to

  return kcalloc(num_entries, sizeof(struct irt_entry))

now?

And these functions end up propagating an allocation error in this file and it 
will never reach kernel/setup.c, which seems bad. But I guess the only point 
where this really can go wrong if the PDC returns an absurdly large number of 
entries.

Eike

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] parisc: Increase the usage check of kmalloc allocated object a
  2022-09-14  6:43   ` Rolf Eike Beer
@ 2022-09-14  9:04     ` Helge Deller
  2022-09-14 14:25       ` Rolf Eike Beer
  0 siblings, 1 reply; 6+ messages in thread
From: Helge Deller @ 2022-09-14  9:04 UTC (permalink / raw)
  To: Rolf Eike Beer, Li zeming, James.Bottomley; +Cc: linux-parisc, linux-kernel

On 9/14/22 08:43, Rolf Eike Beer wrote:
> Am Mittwoch, 14. September 2022, 08:18:19 CEST schrieb Helge Deller:
>> On 9/14/22 08:04, Li zeming wrote:
>>> In the case of memory allocation failure, no alignment operation is
>>> required.
>>>
>>> Signed-off-by: Li zeming <zeming@nfschina.com>
>>> ---
>>>
>>>    drivers/parisc/iosapic.c | 4 +++-
>>>    1 file changed, 3 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/parisc/iosapic.c b/drivers/parisc/iosapic.c
>>> index 3a8c98615634..33de438916d3 100644
>>> --- a/drivers/parisc/iosapic.c
>>> +++ b/drivers/parisc/iosapic.c
>>> @@ -229,7 +229,9 @@ static struct irt_entry *iosapic_alloc_irt(int
>>> num_entries)>
>>>    	 * 4-byte alignment on 32-bit kernels
>>>    	 */
>>>
>>>    	a = (unsigned long)kmalloc(sizeof(struct irt_entry) * num_entries
> + 8,
>>>    	GFP_KERNEL);>
>>> -	a = (a + 7UL) & ~7UL;
>>> +	if (a)
>>> +		a = (a + 7UL) & ~7UL;
>>> +
>>
>> As you said, the adjustment isn't required, but it's still ok.
>> So I think the additional "if" isn't necessary and so I'm not
>> applying your patch.
>>
>> Anyway, thanks for your help to try to improve the code!
>
> I was about to say the same, but from looking at the code I don't think what
> is in there is correct either. The comment seems outdated, because
> __assume_kmalloc_alignment, which is __alignof__(unsigned long long). This
> code is untouched for the entire git history, so maybe we can just change the
> whole thing to
>
>    return kcalloc(num_entries, sizeof(struct irt_entry))
>
> now?

Yes, your proposal is good.
Anyone want to send a patch (with a small comment that kcalloc() will return
at least the required 8-byte alignment)?

> And these functions end up propagating an allocation error in this file and it
> will never reach kernel/setup.c, which seems bad.

That part I don't understand.
The return value of iosapic_alloc_irt() is checked afterwards, but you probably
meant something else?

> But I guess the only point where this really can go wrong if the PDC
> returns an absurdly large number of entries.
Helge

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] parisc: Increase the usage check of kmalloc allocated object a
  2022-09-14  9:04     ` Helge Deller
@ 2022-09-14 14:25       ` Rolf Eike Beer
  2022-09-15  5:44         ` Helge Deller
  0 siblings, 1 reply; 6+ messages in thread
From: Rolf Eike Beer @ 2022-09-14 14:25 UTC (permalink / raw)
  To: Li zeming, James.Bottomley, Helge Deller; +Cc: linux-parisc, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1113 bytes --]

Am Mittwoch, 14. September 2022, 11:04:33 CEST schrieb Helge Deller:
> On 9/14/22 08:43, Rolf Eike Beer wrote:
> > Am Mittwoch, 14. September 2022, 08:18:19 CEST schrieb Helge Deller:
> >> On 9/14/22 08:04, Li zeming wrote:

> Yes, your proposal is good.
> Anyone want to send a patch (with a small comment that kcalloc() will return
> at least the required 8-byte alignment)?

Done.

> > And these functions end up propagating an allocation error in this file
> > and it will never reach kernel/setup.c, which seems bad.
> 
> That part I don't understand.
> The return value of iosapic_alloc_irt() is checked afterwards, but you
> probably meant something else?
> 
> > But I guess the only point where this really can go wrong if the PDC
> > returns an absurdly large number of entries.

What I meant was that if iosapic_alloc_irt() fails, then iosapic_load_irt() 
will return 0, which can either be "nothing to do" or "error". iosapic_init() 
is void, so even if it could detect the failure, it can't report it upwards to 
parisc_init(). Which is the same for basically all other *_init() calls in 
there.

Eike

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] parisc: Increase the usage check of kmalloc allocated object a
  2022-09-14 14:25       ` Rolf Eike Beer
@ 2022-09-15  5:44         ` Helge Deller
  0 siblings, 0 replies; 6+ messages in thread
From: Helge Deller @ 2022-09-15  5:44 UTC (permalink / raw)
  To: Rolf Eike Beer, Li zeming, James.Bottomley; +Cc: linux-parisc, linux-kernel

On 9/14/22 16:25, Rolf Eike Beer wrote:
> Am Mittwoch, 14. September 2022, 11:04:33 CEST schrieb Helge Deller:
>> On 9/14/22 08:43, Rolf Eike Beer wrote:
>>> Am Mittwoch, 14. September 2022, 08:18:19 CEST schrieb Helge Deller:
>>>> On 9/14/22 08:04, Li zeming wrote:
>
>> Yes, your proposal is good.
>> Anyone want to send a patch (with a small comment that kcalloc() will return
>> at least the required 8-byte alignment)?
>
> Done.
>
>>> And these functions end up propagating an allocation error in this file
>>> and it will never reach kernel/setup.c, which seems bad.
>>
>> That part I don't understand.
>> The return value of iosapic_alloc_irt() is checked afterwards, but you
>> probably meant something else?
>>
>>> But I guess the only point where this really can go wrong if the PDC
>>> returns an absurdly large number of entries.
>
> What I meant was that if iosapic_alloc_irt() fails, then iosapic_load_irt()
> will return 0, which can either be "nothing to do" or "error". iosapic_init()
> is void, so even if it could detect the failure, it can't report it upwards to
> parisc_init(). Which is the same for basically all other *_init() calls in
> there.

Ok, I see.
Not sure if that needs fixing. If the allocation fails we will be in trouble anyway :-)

Helge

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-09-15  5:45 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-14  6:04 [PATCH] parisc: Increase the usage check of kmalloc allocated object a Li zeming
2022-09-14  6:18 ` Helge Deller
2022-09-14  6:43   ` Rolf Eike Beer
2022-09-14  9:04     ` Helge Deller
2022-09-14 14:25       ` Rolf Eike Beer
2022-09-15  5:44         ` Helge Deller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).