Commit 9824b8f1 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6

* 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6:
  [S390] cio: fix orb initialization in cio_start_key
  [S390] cio: Fix driver_data handling for ccwgroup devices.
parents ab048fb1 9adb8c1d
...@@ -113,7 +113,8 @@ ccwgroup_release (struct device *dev) ...@@ -113,7 +113,8 @@ ccwgroup_release (struct device *dev)
for (i = 0; i < gdev->count; i++) { for (i = 0; i < gdev->count; i++) {
if (gdev->cdev[i]) { if (gdev->cdev[i]) {
dev_set_drvdata(&gdev->cdev[i]->dev, NULL); if (dev_get_drvdata(&gdev->cdev[i]->dev) == gdev)
dev_set_drvdata(&gdev->cdev[i]->dev, NULL);
put_device(&gdev->cdev[i]->dev); put_device(&gdev->cdev[i]->dev);
} }
} }
...@@ -296,6 +297,7 @@ error: ...@@ -296,6 +297,7 @@ error:
if (dev_get_drvdata(&gdev->cdev[i]->dev) == gdev) if (dev_get_drvdata(&gdev->cdev[i]->dev) == gdev)
dev_set_drvdata(&gdev->cdev[i]->dev, NULL); dev_set_drvdata(&gdev->cdev[i]->dev, NULL);
put_device(&gdev->cdev[i]->dev); put_device(&gdev->cdev[i]->dev);
gdev->cdev[i] = NULL;
} }
mutex_unlock(&gdev->reg_mutex); mutex_unlock(&gdev->reg_mutex);
put_device(&gdev->dev); put_device(&gdev->dev);
......
...@@ -174,6 +174,7 @@ cio_start_key (struct subchannel *sch, /* subchannel structure */ ...@@ -174,6 +174,7 @@ cio_start_key (struct subchannel *sch, /* subchannel structure */
CIO_TRACE_EVENT(4, sch->dev.bus_id); CIO_TRACE_EVENT(4, sch->dev.bus_id);
orb = &to_io_private(sch)->orb; orb = &to_io_private(sch)->orb;
memset(orb, 0, sizeof(union orb));
/* sch is always under 2G. */ /* sch is always under 2G. */
orb->cmd.intparm = (u32)(addr_t)sch; orb->cmd.intparm = (u32)(addr_t)sch;
orb->cmd.fmt = 1; orb->cmd.fmt = 1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment