VServer 1.9.2 (patch-2.6.8.1-vs1.9.2.diff)
[linux-2.6.git] / drivers / media / dvb / dvb-core / dvb_i2c.c
index fd4989f..8bc8b5e 100644 (file)
@@ -191,8 +191,10 @@ dvb_register_i2c_bus (int (*xfer) (struct dvb_i2c_bus *i2c,
        if (down_interruptible (&dvb_i2c_mutex))
                return NULL;
 
-       if (!(i2c = kmalloc (sizeof (struct dvb_i2c_bus), GFP_KERNEL)))
+       if (!(i2c = kmalloc (sizeof (struct dvb_i2c_bus), GFP_KERNEL))) {
+               up (&dvb_i2c_mutex);
                return NULL;
+       }
 
        INIT_LIST_HEAD(&i2c->list_head);
        INIT_LIST_HEAD(&i2c->client_list);
@@ -239,8 +241,10 @@ int dvb_register_i2c_device (struct module *owner,
        if (down_interruptible (&dvb_i2c_mutex))
                return -ERESTARTSYS;
 
-       if (!(entry = kmalloc (sizeof (struct dvb_i2c_device), GFP_KERNEL)))
+       if (!(entry = kmalloc (sizeof (struct dvb_i2c_device), GFP_KERNEL))) {
+               up(&dvb_i2c_mutex);
                return -ENOMEM;
+       }
 
        entry->owner = owner;
        entry->attach = attach;