diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-09-15 00:02:28 +0100 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-09-15 00:02:28 +0100 |
commit | 1db3706b05b11abcf2673ffbed5ad43b4c90ed11 (patch) | |
tree | 09fa867d9d9db6ed475eaa889da143603441e1a6 /drivers/s390 | |
parent | ad30a2bbdc20cf0111156e2aa6d2cc3e3c0d1893 (diff) | |
parent | 63d15148b6058ab0037343390e8918503ed81968 (diff) |
Merge branch 'zImage_DTB_append' of git://git.linaro.org/people/nico/linux into devel-stable
Diffstat (limited to 'drivers/s390')
-rw-r--r-- | drivers/s390/block/dasd_ioctl.c | 10 | ||||
-rw-r--r-- | drivers/s390/char/sclp_cmd.c | 6 |
2 files changed, 11 insertions, 5 deletions
diff --git a/drivers/s390/block/dasd_ioctl.c b/drivers/s390/block/dasd_ioctl.c index eb4e034378cd..f1a2016829fc 100644 --- a/drivers/s390/block/dasd_ioctl.c +++ b/drivers/s390/block/dasd_ioctl.c @@ -249,6 +249,7 @@ static int dasd_ioctl_reset_profile(struct dasd_block *block) static int dasd_ioctl_read_profile(struct dasd_block *block, void __user *argp) { struct dasd_profile_info_t *data; + int rc = 0; data = kmalloc(sizeof(*data), GFP_KERNEL); if (!data) @@ -279,11 +280,14 @@ static int dasd_ioctl_read_profile(struct dasd_block *block, void __user *argp) spin_unlock_bh(&block->profile.lock); } else { spin_unlock_bh(&block->profile.lock); - return -EIO; + rc = -EIO; + goto out; } if (copy_to_user(argp, data, sizeof(*data))) - return -EFAULT; - return 0; + rc = -EFAULT; +out: + kfree(data); + return rc; } #else static int dasd_ioctl_reset_profile(struct dasd_block *block) diff --git a/drivers/s390/char/sclp_cmd.c b/drivers/s390/char/sclp_cmd.c index be55fb2b1b1c..837e010299a8 100644 --- a/drivers/s390/char/sclp_cmd.c +++ b/drivers/s390/char/sclp_cmd.c @@ -383,8 +383,10 @@ static int sclp_attach_storage(u8 id) switch (sccb->header.response_code) { case 0x0020: set_bit(id, sclp_storage_ids); - for (i = 0; i < sccb->assigned; i++) - sclp_unassign_storage(sccb->entries[i] >> 16); + for (i = 0; i < sccb->assigned; i++) { + if (sccb->entries[i]) + sclp_unassign_storage(sccb->entries[i] >> 16); + } break; default: rc = -EIO; |