Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 88408
b: refs/heads/master
c: 8284fb1
h: refs/heads/master
v: v3
  • Loading branch information
Michael Ernst authored and Heiko Carstens committed Apr 17, 2008
1 parent b454188 commit cdcad90
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 5 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: fe6173d9b33dba18ec462051750fb1b9abcd796d
refs/heads/master: 8284fb19efa1f11ea8dd213e9e227fc1fcb20586
3 changes: 0 additions & 3 deletions trunk/drivers/s390/cio/chsc.c
Original file line number Diff line number Diff line change
Expand Up @@ -766,15 +766,13 @@ chsc_secm(struct channel_subsystem *css, int enable)
if (!secm_area)
return -ENOMEM;

mutex_lock(&css->mutex);
if (enable && !css->cm_enabled) {
css->cub_addr1 = (void *)get_zeroed_page(GFP_KERNEL | GFP_DMA);
css->cub_addr2 = (void *)get_zeroed_page(GFP_KERNEL | GFP_DMA);
if (!css->cub_addr1 || !css->cub_addr2) {
free_page((unsigned long)css->cub_addr1);
free_page((unsigned long)css->cub_addr2);
free_page((unsigned long)secm_area);
mutex_unlock(&css->mutex);
return -ENOMEM;
}
}
Expand All @@ -795,7 +793,6 @@ chsc_secm(struct channel_subsystem *css, int enable)
free_page((unsigned long)css->cub_addr1);
free_page((unsigned long)css->cub_addr2);
}
mutex_unlock(&css->mutex);
free_page((unsigned long)secm_area);
return ret;
}
Expand Down
10 changes: 9 additions & 1 deletion trunk/drivers/s390/cio/css.c
Original file line number Diff line number Diff line change
Expand Up @@ -689,10 +689,14 @@ css_cm_enable_show(struct device *dev, struct device_attribute *attr,
char *buf)
{
struct channel_subsystem *css = to_css(dev);
int ret;

if (!css)
return 0;
return sprintf(buf, "%x\n", css->cm_enabled);
mutex_lock(&css->mutex);
ret = sprintf(buf, "%x\n", css->cm_enabled);
mutex_unlock(&css->mutex);
return ret;
}

static ssize_t
Expand All @@ -702,6 +706,7 @@ css_cm_enable_store(struct device *dev, struct device_attribute *attr,
struct channel_subsystem *css = to_css(dev);
int ret;

mutex_lock(&css->mutex);
switch (buf[0]) {
case '0':
ret = css->cm_enabled ? chsc_secm(css, 0) : 0;
Expand All @@ -712,6 +717,7 @@ css_cm_enable_store(struct device *dev, struct device_attribute *attr,
default:
ret = -EINVAL;
}
mutex_unlock(&css->mutex);
return ret < 0 ? ret : count;
}

Expand Down Expand Up @@ -758,9 +764,11 @@ static int css_reboot_event(struct notifier_block *this,
struct channel_subsystem *css;

css = channel_subsystems[i];
mutex_lock(&css->mutex);
if (css->cm_enabled)
if (chsc_secm(css, 0))
ret = NOTIFY_BAD;
mutex_unlock(&css->mutex);
}

return ret;
Expand Down

0 comments on commit cdcad90

Please sign in to comment.