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.
This commit is contained in:
Linus Torvalds 2008-09-19 16:24:03 -07:00
commit 9824b8f113
2 changed files with 4 additions and 1 deletions

View File

@ -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:
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);

View File

@ -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;