> > On Tue, 2015-12-08 at 10:02 -0800, Shannon Nelson wrote: > > On Mon, Dec 7, 2015 at 8:42 PM, <kan.li...@intel.com> wrote: > > > From: Kan Liang <kan.li...@intel.com> > > > > > > Intrdouce "queue" option for coalesce getting and setting. > [...] > > > --- a/net/core/ethtool.c > > > +++ b/net/core/ethtool.c > > > @@ -1123,10 +1123,16 @@ static noinline_for_stack int > > > ethtool_get_coalesce(struct net_device *dev, > > > void __user > > > *useraddr) > > > { > > > struct ethtool_coalesce coalesce = { .cmd = > > > ETHTOOL_GCOALESCE }; > > > + struct ethtool_coalesce tmp = { .queue = -1 }; > > > > > > if (!dev->ethtool_ops->get_coalesce) > > > return -EOPNOTSUPP; > > > > > > + if (copy_from_user(&tmp, useraddr, sizeof(coalesce))) > > > + return -EFAULT; > > > + > > > + coalesce.queue = tmp.queue; > > > + > > > > Is this going to do what you expect when you have an older ethtool > > program? It seems to me that the older ethtool program will have the > > original coalesce struct without the new queue field, so when you do > [...] > > Indeed, it's not safe to extend UAPI structures like this.
Any suggestions for that? If we cannot extend the existing UAPI structures. I guess we have to add a new Ioctl like ETHTOOL_GCOALESCE_V2 for the new structure? Thanks, Kan