> From: netdev-ow...@vger.kernel.org [mailto:netdev-ow...@vger.kernel.org] > On Behalf Of Jacob Keller > Sent: Thursday, September 26, 2019 11:11 AM > To: netdev@vger.kernel.org > Cc: Intel Wired LAN <intel-wired-...@lists.osuosl.org>; Kirsher, Jeffrey T > <jeffrey.t.kirs...@intel.com>; Keller, Jacob E <jacob.e.kel...@intel.com>; > Richard Cochran <richardcoch...@gmail.com>; Felipe Balbi > <felipe.ba...@linux.intel.com>; David S . Miller <da...@davemloft.net>; Hall, > Christopher S <christopher.s.h...@intel.com> > Subject: [net-next v3 1/7] ptp: correctly disable flags on old ioctls > > Commit 415606588c61 ("PTP: introduce new versions of IOCTLs", > 2019-09-13) introduced new versions of the PTP ioctls which actually > validate that the flags are acceptable values. > > As part of this, it cleared the flags value using a bitwise > and+negation, in an attempt to prevent the old ioctl from accidentally > enabling new features. > > This is incorrect for a couple of reasons. First, it results in > accidentally preventing previously working flags on the request ioctl. > By clearing the "valid" flags, we now no longer allow setting the > enable, rising edge, or falling edge flags. > > Second, if we add new additional flags in the future, they must not be > set by the old ioctl. (Since the flag wasn't checked before, we could > potentially break userspace programs which sent garbage flag data. > > The correct way to resolve this is to check for and clear all but the > originally valid flags. > > Create defines indicating which flags are correctly checked and > interpreted by the original ioctls. Use these to clear any bits which > will not be correctly interpreted by the original ioctls. > > In the future, new flags must be added to the VALID_FLAGS macros, but > *not* to the V1_VALID_FLAGS macros. In this way, new features may be > exposed over the v2 ioctls, but without breaking previous userspace > which happened to not clear the flags value properly. The old ioctl will > continue to behave the same way, while the new ioctl gains the benefit > of using the flags fields. > > Cc: Richard Cochran <richardcoch...@gmail.com> > Cc: Felipe Balbi <felipe.ba...@linux.intel.com> > Cc: David S. Miller <da...@davemloft.net> > Cc: Christopher Hall <christopher.s.h...@intel.com> > Signed-off-by: Jacob Keller <jacob.e.kel...@intel.com> > --- > drivers/ptp/ptp_chardev.c | 4 ++-- > include/uapi/linux/ptp_clock.h | 22 ++++++++++++++++++++++ > 2 files changed, 24 insertions(+), 2 deletions(-)
Tested-by: Aaron Brown <aaron.f.br...@intel.com>