hc
2023-12-06 08f87f769b595151be1afeff53e144f543faa614
kernel/drivers/mtd/maps/pcmciamtd.c
....@@ -294,16 +294,15 @@
294294 }
295295
296296
297
-static DEFINE_SPINLOCK(pcmcia_vpp_lock);
297
+static DEFINE_MUTEX(pcmcia_vpp_lock);
298298 static int pcmcia_vpp_refcnt;
299299 static void pcmciamtd_set_vpp(struct map_info *map, int on)
300300 {
301301 struct pcmciamtd_dev *dev = (struct pcmciamtd_dev *)map->map_priv_1;
302302 struct pcmcia_device *link = dev->p_dev;
303
- unsigned long flags;
304303
305304 pr_debug("dev = %p on = %d vpp = %d\n\n", dev, on, dev->vpp);
306
- spin_lock_irqsave(&pcmcia_vpp_lock, flags);
305
+ mutex_lock(&pcmcia_vpp_lock);
307306 if (on) {
308307 if (++pcmcia_vpp_refcnt == 1) /* first nested 'on' */
309308 pcmcia_fixup_vpp(link, dev->vpp);
....@@ -311,7 +310,7 @@
311310 if (--pcmcia_vpp_refcnt == 0) /* last nested 'off' */
312311 pcmcia_fixup_vpp(link, 0);
313312 }
314
- spin_unlock_irqrestore(&pcmcia_vpp_lock, flags);
313
+ mutex_unlock(&pcmcia_vpp_lock);
315314 }
316315
317316