> +static inline void setup_link_status_change_wq(struct net_device *netdev) > +{ > + struct lio *lio = GET_LIO(netdev); > + struct octeon_device *oct = lio->oct_dev; > + > + lio->link_status_wq.wq = alloc_workqueue("link-status", > + WQ_MEM_RECLAIM, 0); > + if (!lio->link_status_wq.wq) { > + dev_err(&oct->pci_dev->dev, "unable to create cavium link > status wq\n"); > + return; > + } > + INIT_DELAYED_WORK(&lio->link_status_wq.wk.work, > + octnet_link_status_change); > + lio->link_status_wq.wk.ctxptr = lio; > +}
Don't you need to propagate the allocation failure? Won't this wouldn't you still try to schedule the non-initialized workitem on the non-existent workqueue later on?