From: Jacob Keller <jacob.e.kel...@intel.com> Date: Wed, 25 Sep 2019 19:28:19 -0700
> 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. > > Signed-off-by: Jacob Keller <jacob.e.kel...@intel.com> Applied to 'net'.