On Fri, Jan 22, 2021 at 09:35:43AM -0800, Linus Torvalds wrote: > On Fri, Jan 22, 2021 at 8:26 AM Luc Van Oostenryck > <luc.vanoostenryck@xxxxxxxxx> wrote: > > > > So, the solution chosen here is to handle this during type examination, > > more precisely, inside examine_struct_union_type(), where things are > > a bit more complicated > > Well, doesn't look all that complicated to me. > > The only thing I would do is to just at the head of that function do: > > unsigned long mod = sym->ctype.modifiers & MOD_QUALIFIER; > > if (!mod) > return; > > and that also means that you can avoid the "parent-vs-sym" thing, > because the symbol is never used after that, so you don't need to > create a new one. Yes, certainly since the vast majority will have a null mod. > The other thing that might be worth doing is to just make sure that > the "sub" whose modifier you change is always a SYM_NODE. We never > want to touch an actual type, only the node. > > I don't think it _can_ be anything else (that's how the struct/union > symbol_list should be set up), but since this is a very unusual case > of going back and modifying a symbol after the fact, I think I'd be a > bit more comfortable with that kind of sanity check. Yes, I agree. I fact I almost did this but hen I said "why bother? it's always a NODE anyway". But sure, it's cheap and better be safe than sorry. > Anyway, looks good, and obviously passes my trivial test-case. Thank you. -- Luc