The procedure below from ipconfig.c assumes that "?" updates user_dev_name[0]. I think that falls under undefined use of the result as an lvalue.
It works when I explicitly assign the result of the operation back to user_dev_name[0]. static bool __init ic_is_init_dev(struct net_device *dev) { if (dev->flags & IFF_LOOPBACK) return false; return user_dev_name[0] ? !strcmp(dev->name, user_dev_name) : (!(dev->flags & IFF_LOOPBACK) && (dev->flags & (IFF_POINTOPOINT|IFF_BROADCAST)) && strncmp(dev->name, "dummy", 5)); } Regards, I guess booting from network is uncommon these days. -Steven