On Fri, 14 Dec 2018 12:58:13 -0700, David Ahern wrote: > On 12/14/18 12:54 PM, Jakub Kicinski wrote: > > On Fri, 14 Dec 2018 12:42:21 -0700, David Ahern wrote: > >> On 12/14/18 12:37 PM, Jakub Kicinski wrote: > >>> Oh, so we'd use the STRICT checking in doit for the first time? I > >>> better send that rename patch then.. > >> > >> IMHO, no. The flag is for older userspace that could be sending junk in > >> the request. All new code should do strict checking without the flag set > >> to ensure only proper requests are handled. > > > > I'm going back and forth on that in my head. IDK if new user space > > shouldn't be able to do a get request on an old kernel which doesn't > > understand some of the attributes. Grey area.. perhaps it needs to be > > decided on case by case basis? For my stats work I think returning too > > many stats if what is affectively a filter is not understood may be a > > good option. Perhaps for fdb get it makes more sense to error out. > > hmm.. > > I am referring to new code as in what Roopa is doing here -- adding a > whole new feature (support for RTM_GETNEIGH for PF_BRIDGE). There is no > support today, so no way it impacts existing userspace. > > In cases where there is a handler for the operation, then, yes, the > strict flag is needed for any new kernel side filtering to ensure the > request is parsed properly.
Ack. So for those new handlers we would never allow the behaviour of ignoring unknown attributes? Perhaps I'm over-thinking this, but maybe we should then just require the STRICT flag on the socket, and if not set return -EINVAL? Slightly more consistent behaviour, and it gives us a clean way out if someone has a strong use case for ignoring the attributes. Just spit balling here, I'm happy either way.