Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 268301
b: refs/heads/master
c: f6c39d4
h: refs/heads/master
i:
  268299: 9fdfa42
v: v3
  • Loading branch information
Manohar Vanga authored and Greg Kroah-Hartman committed Sep 9, 2011
1 parent d8fbb2d commit 25322e3
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 6 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 2192e60654c2b91de45dce44a23723f725603ce1
refs/heads/master: f6c39d4f2d350df049a844b658eb6b08c5833e51
21 changes: 17 additions & 4 deletions trunk/drivers/staging/vme/vme.c
Original file line number Diff line number Diff line change
Expand Up @@ -1338,6 +1338,11 @@ static void vme_remove_bus(struct vme_bridge *bridge)
mutex_unlock(&vme_buses_lock);
}

static void vme_dev_release(struct device *dev)
{
kfree(dev);
}

int vme_register_bridge(struct vme_bridge *bridge)
{
struct device *dev;
Expand All @@ -1353,11 +1358,17 @@ int vme_register_bridge(struct vme_bridge *bridge)
* specification.
*/
for (i = 0; i < VME_SLOTS_MAX; i++) {
dev = &bridge->dev[i];
bridge->dev[i] = kzalloc(sizeof(struct device), GFP_KERNEL);
if (!bridge->dev[i]) {
retval = -ENOMEM;
goto err_devalloc;
}
dev = bridge->dev[i];
memset(dev, 0, sizeof(struct device));

dev->parent = bridge->parent;
dev->bus = &vme_bus_type;
dev->release = vme_dev_release;
/*
* We save a pointer to the bridge in platform_data so that we
* can get to it later. We keep driver_data for use by the
Expand All @@ -1374,8 +1385,10 @@ int vme_register_bridge(struct vme_bridge *bridge)
return retval;

err_reg:
kfree(dev);
err_devalloc:
while (--i >= 0) {
dev = &bridge->dev[i];
dev = bridge->dev[i];
device_unregister(dev);
}
vme_remove_bus(bridge);
Expand All @@ -1390,7 +1403,7 @@ void vme_unregister_bridge(struct vme_bridge *bridge)


for (i = 0; i < VME_SLOTS_MAX; i++) {
dev = &bridge->dev[i];
dev = bridge->dev[i];
device_unregister(dev);
}
vme_remove_bus(bridge);
Expand Down Expand Up @@ -1427,7 +1440,7 @@ static int vme_calc_slot(struct device *dev)
/* Determine slot number */
num = 0;
while (num < VME_SLOTS_MAX) {
if (&bridge->dev[num] == dev)
if (bridge->dev[num] == dev)
break;

num++;
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/staging/vme/vme_bridge.h
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ struct vme_bridge {
void *driver_priv; /* Private pointer for the bridge driver */
struct list_head bus_list; /* list of VME buses */

struct device dev[VME_SLOTS_MAX]; /* Device registered with
struct device *dev[VME_SLOTS_MAX]; /* Device registered with
* device model on VME bus
*/

Expand Down

0 comments on commit 25322e3

Please sign in to comment.