X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fs390%2Fcio%2Fchsc.c;h=e5a9b015874813d9db346c6ad4517b0857fa7247;hb=043471a130a8787b4b470bb4400b780bf615b019;hp=de60cfd4550a4984c3b85169d68f0f9dddbe6e75;hpb=a91482bdcc2e0f6035702e46f1b99043a0893346;p=linux-2.6.git diff --git a/drivers/s390/cio/chsc.c b/drivers/s390/cio/chsc.c index de60cfd45..e5a9b0158 100644 --- a/drivers/s390/cio/chsc.c +++ b/drivers/s390/cio/chsc.c @@ -1,7 +1,7 @@ /* * drivers/s390/cio/chsc.c * S/390 common I/O routines -- channel subsystem call - * $Revision: 1.115 $ + * $Revision: 1.114 $ * * Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH, * IBM Corporation @@ -906,6 +906,8 @@ new_channel_path(int chpid) return -ENOMEM; memset(chp, 0, sizeof(struct channel_path)); + chps[chpid] = chp; + /* fill in status, etc. */ chp->id = chpid; chp->state = 1; @@ -920,17 +922,12 @@ new_channel_path(int chpid) if (ret) { printk(KERN_WARNING "%s: could not register %02x\n", __func__, chpid); - goto out_free; + return ret; } ret = device_create_file(&chp->dev, &dev_attr_status); - if (ret) { + if (ret) device_unregister(&chp->dev); - goto out_free; - } else - chps[chpid] = chp; - return ret; -out_free: - kfree(chp); + return ret; }