From 1171e98181a6a1ce49e98fe274fe1b3ddc0d0f0f Mon Sep 17 00:00:00 2001 From: Jeff Dike Date: Tue, 15 Oct 2002 03:21:41 -0400 Subject: [PATCH] Fixed some locking bugs spotted by Oleg Drokin. --- arch/um/drivers/ubd_kern.c | 2 +- arch/um/kernel/irq_user.c | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c index 6777b7e97003..fb7f065400b4 100644 --- a/arch/um/drivers/ubd_kern.c +++ b/arch/um/drivers/ubd_kern.c @@ -968,8 +968,8 @@ static int ubd_revalidate(kdev_t rdev) set_capacity(fake_gendisk[n], size / 512); dev->size = size; } - spin_unlock(&ubd_lock); out: + spin_unlock(&ubd_lock); return err; } diff --git a/arch/um/kernel/irq_user.c b/arch/um/kernel/irq_user.c index d1b66a0eb66f..ef56eef4f6c1 100644 --- a/arch/um/kernel/irq_user.c +++ b/arch/um/kernel/irq_user.c @@ -157,7 +157,7 @@ int activate_fd(int irq, int fd, int type, void *dev_id) printk("Registering fd %d twice\n", fd); printk("Irqs : %d, %d\n", irq_fd->irq, irq); printk("Ids : 0x%x, 0x%x\n", irq_fd->id, dev_id); - goto out_free; + goto out_unlock; } } @@ -334,8 +334,10 @@ void reactivate_fd(int fd, int irqnum) flags = irq_lock(); irq = find_irq_by_fd(fd, irqnum, &i); - if(irq == NULL) - goto out; + if(irq == NULL){ + irq_unlock(flags); + return; + } pollfds[i].fd = irq->fd; irq_unlock(flags); @@ -344,8 +346,6 @@ void reactivate_fd(int fd, int irqnum) * section. */ maybe_sigio_broken(fd, irq->type); - out: - irq_unlock(flags); } void deactivate_fd(int fd, int irqnum) -- 2.39.5