Hi! > > We avoid 2 VLAs by using a pre-allocated field in dsa_switch. We also > > try to avoid dynamic allocation whenever possible (when using fewer than > > bits-per-long ports, which is the common case). > > > > Link: http://lkml.kernel.org/r/CA+55aFzCG-zNmZwX4A2FQpadafLfEzK6CC=qPXydAacU1RqZWA@mail.gmail.com > > Link: http://lkml.kernel.org/r/20180505185145.GB32630@lunn.ch > > Signed-off-by: Salvatore Mesoraca > > [kees: tweak commit subject and message slightly] > > Signed-off-by: Kees Cook > > --- > > include/net/dsa.h | 3 +++ > > net/dsa/dsa2.c | 14 ++++++++++++++ > > net/dsa/switch.c | 22 ++++++++++------------ > > 3 files changed, 27 insertions(+), 12 deletions(-) > > > > diff --git a/include/net/dsa.h b/include/net/dsa.h > > index fdbd6082945d..461e8a7661b7 100644 > > --- a/include/net/dsa.h > > +++ b/include/net/dsa.h > > @@ -259,6 +259,9 @@ struct dsa_switch { > > /* Number of switch port queues */ > > unsigned int num_tx_queues; > > > > + unsigned long *bitmap; > > + unsigned long _bitmap; > > This looks rather confusing. _bitmap -> bitmap_data? bitmap_bits? Actually, AFAICT that long is not used as a long, but as array of bits. So maybe char bitmap_data[8] would be more appropriate? (resend, now with right cc list). Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html