On Tue, Nov 24, 2020 at 5:19 PM David Laight <david.lai...@aculab.com> wrote: > > From: Arnd Bergmann > > Sent: 24 November 2020 15:18 > > > > The ethtool compat ioctl handling is hidden away in net/socket.c, > > which introduces a couple of minor oddities: > > > ... > > + > > +static int ethtool_rxnfc_copy_from_compat(struct ethtool_rxnfc *rxnfc, > > + const struct compat_ethtool_rxnfc > > __user *useraddr, > > + size_t size) > > +{ > > I think this (and possibly others) want a 'noinline_for_stack'. > So that both the normal and compat structures aren't both on the > stack when the real code is called.
Yes, makes sense. I checked that the difference is small unless CONFIG_KASAN_STACK is enabled, and that gcc is smart enough not to inline these by default, but adding noinline_for_stack is both consistent with the rest of the file and the safe bet here. Arnd