Messages in this thread | | | Subject | Re: [PATCH] mips: irq: Use DECLARE_BITMAP | From | Joe Perches <> | Date | Thu, 21 May 2015 09:10:31 -0700 |
| |
On Thu, 2015-05-21 at 15:14 +0200, Ralf Baechle wrote: > On Wed, May 20, 2015 at 05:44:54AM -0700, Joe Perches wrote: > > > Use the generic mechanism to declare a bitmap instead of unsigned long. > > > > This could fix an overwrite defect of whatever follows irq_map. > > > > Not all "#define NR_IRQS <value>" are a multiple of BITS_PER_LONG so > > using DECLARE_BITMAP allocates the proper number of longs required > > for the possible bits. > > > > For instance: > > > > arch/mips/include/asm/mach-ath79/irq.h:#define NR_IRQS 51 > > arch/mips/include/asm/mach-db1x00/irq.h:#define NR_IRQS 152 > > arch/mips/include/asm/mach-lantiq/falcon/irq.h:#define NR_IRQS 328 > > This only matters to user of the allocate_irqno() API and there is only > on such platform, the IP27 which fortunately uses a NR_IRQS value that > is a multiple of 64, so no impact. > > Thanks anyway!
I think you should apply it anyway as it's an error-prone style.
There are 3 mechanisms used today in the kernel to declare bitmap arrays.
DECLARE_BITMAP(array, size) unsigned long array[BITS_TO_LONGS(size)] unsigned long array[size/BITS_PER_LONG]
The first 2 are fine, the last has this defect possible whenever size % BITS_PER_LONG != 0.
The series I sent converts all the uses of the the possibly defective style.
cheers, Joe
| |