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@xxxxxxxxxxxx> > > --- > > > > 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:
signature.asc
Description: This is a digitally signed message part.