提交 9824b8f1 编写于 作者: L 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.
...@@ -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 @@ int ccwgroup_create_from_string(struct device *root, unsigned int creator_id, ...@@ -296,6 +297,7 @@ int ccwgroup_create_from_string(struct device *root, unsigned int creator_id,
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% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册