hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/net/arcnet/com20020_cs.c
....@@ -113,6 +113,7 @@
113113 struct com20020_dev *info;
114114 struct net_device *dev;
115115 struct arcnet_local *lp;
116
+ int ret = -ENOMEM;
116117
117118 dev_dbg(&p_dev->dev, "com20020_attach()\n");
118119
....@@ -142,12 +143,18 @@
142143 info->dev = dev;
143144 p_dev->priv = info;
144145
145
- return com20020_config(p_dev);
146
+ ret = com20020_config(p_dev);
147
+ if (ret)
148
+ goto fail_config;
146149
150
+ return 0;
151
+
152
+fail_config:
153
+ free_arcdev(dev);
147154 fail_alloc_dev:
148155 kfree(info);
149156 fail_alloc_info:
150
- return -ENOMEM;
157
+ return ret;
151158 } /* com20020_attach */
152159
153160 static void com20020_detach(struct pcmcia_device *link)
....@@ -177,7 +184,7 @@
177184 dev = info->dev;
178185 if (dev) {
179186 dev_dbg(&link->dev, "kfree...\n");
180
- free_netdev(dev);
187
+ free_arcdev(dev);
181188 }
182189 dev_dbg(&link->dev, "kfree2...\n");
183190 kfree(info);