s390/qdio: don't release memory in qdio_setup_irq()

Calling qdio_release_memory() on error is just plain wrong. It frees
the main qdio_irq struct, when following code still uses it.

Also, no other error path in qdio_establish() does this. So trust
callers to clean up via qdio_free() if some step of the QDIO
initialization fails.

Fixes: 779e6e1c724d ("[S390] qdio: new qdio driver.")
Cc: <stable@vger.kernel.org> #v2.6.27+
Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>

authored by Julian Wiedmann and committed by Martin Schwidefsky 2e68adcd e5218134

+2 -8
+2 -8
drivers/s390/cio/qdio_setup.c
··· 456 456 { 457 457 struct ciw *ciw; 458 458 struct qdio_irq *irq_ptr = init_data->cdev->private->qdio_data; 459 - int rc; 460 459 461 460 memset(&irq_ptr->qib, 0, sizeof(irq_ptr->qib)); 462 461 memset(&irq_ptr->siga_flag, 0, sizeof(irq_ptr->siga_flag)); ··· 492 493 ciw = ccw_device_get_ciw(init_data->cdev, CIW_TYPE_EQUEUE); 493 494 if (!ciw) { 494 495 DBF_ERROR("%4x NO EQ", irq_ptr->schid.sch_no); 495 - rc = -EINVAL; 496 - goto out_err; 496 + return -EINVAL; 497 497 } 498 498 irq_ptr->equeue = *ciw; 499 499 500 500 ciw = ccw_device_get_ciw(init_data->cdev, CIW_TYPE_AQUEUE); 501 501 if (!ciw) { 502 502 DBF_ERROR("%4x NO AQ", irq_ptr->schid.sch_no); 503 - rc = -EINVAL; 504 - goto out_err; 503 + return -EINVAL; 505 504 } 506 505 irq_ptr->aqueue = *ciw; 507 506 ··· 509 512 init_data->cdev->handler = qdio_int_handler; 510 513 spin_unlock_irq(get_ccwdev_lock(irq_ptr->cdev)); 511 514 return 0; 512 - out_err: 513 - qdio_release_memory(irq_ptr); 514 - return rc; 515 515 } 516 516 517 517 void qdio_print_subchannel_info(struct qdio_irq *irq_ptr,