struct sfp_bus          *sfp_bus;
        struct lock_class_key   *qdisc_tx_busylock;
        bool                    proto_down;
+       bool                    threaded;
        unsigned                wol_enabled:1;
-       unsigned                threaded:1;
 
        struct list_head        net_notifier_list;
 
 
                }
        }
 
-       dev->threaded = threaded;
+       WRITE_ONCE(dev->threaded, threaded);
 
        /* Make sure kthread is created before THREADED bit
         * is set.
         * threaded mode will not be enabled in napi_enable().
         */
        if (dev->threaded && napi_kthread_create(napi))
-               dev->threaded = 0;
+               dev->threaded = false;
        netif_napi_set_irq(napi, -1);
 }
 EXPORT_SYMBOL(netif_napi_add_weight);
 
        struct net_device *netdev = to_net_dev(dev);
        ssize_t ret = -EINVAL;
 
-       if (!rtnl_trylock())
-               return restart_syscall();
+       rcu_read_lock();
 
        if (dev_isalive(netdev))
-               ret = sysfs_emit(buf, fmt_dec, netdev->threaded);
+               ret = sysfs_emit(buf, fmt_dec, READ_ONCE(netdev->threaded));
+
+       rcu_read_unlock();
 
-       rtnl_unlock();
        return ret;
 }