diff options
Diffstat (limited to 'drivers/s390')
-rw-r--r-- | drivers/s390/block/dasd.c | 12 | ||||
-rw-r--r-- | drivers/s390/block/dasd_devmap.c | 3 | ||||
-rw-r--r-- | drivers/s390/block/dasd_diag.c | 64 | ||||
-rw-r--r-- | drivers/s390/block/dasd_diag.h | 10 | ||||
-rw-r--r-- | drivers/s390/char/con3215.c | 3 | ||||
-rw-r--r-- | drivers/s390/char/keyboard.c | 15 | ||||
-rw-r--r-- | drivers/s390/char/raw3270.c | 3 | ||||
-rw-r--r-- | drivers/s390/char/tape_core.c | 9 | ||||
-rw-r--r-- | drivers/s390/char/vmcp.c | 4 | ||||
-rw-r--r-- | drivers/s390/cio/ccwgroup.c | 6 | ||||
-rw-r--r-- | drivers/s390/cio/cmf.c | 3 | ||||
-rw-r--r-- | drivers/s390/cio/device_ops.c | 6 | ||||
-rw-r--r-- | drivers/s390/cio/qdio.c | 17 | ||||
-rw-r--r-- | drivers/s390/crypto/z90main.c | 7 | ||||
-rw-r--r-- | drivers/s390/net/claw.c | 36 | ||||
-rw-r--r-- | drivers/s390/net/fsm.c | 3 | ||||
-rw-r--r-- | drivers/s390/net/iucv.c | 12 | ||||
-rw-r--r-- | drivers/s390/net/lcs.c | 3 | ||||
-rw-r--r-- | drivers/s390/net/qeth_eddp.c | 3 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_aux.c | 3 |
20 files changed, 96 insertions, 126 deletions
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c index 8fc891a9d47f..7008d32433bf 100644 --- a/drivers/s390/block/dasd.c +++ b/drivers/s390/block/dasd.c | |||
@@ -115,8 +115,7 @@ dasd_alloc_device(void) | |||
115 | void | 115 | void |
116 | dasd_free_device(struct dasd_device *device) | 116 | dasd_free_device(struct dasd_device *device) |
117 | { | 117 | { |
118 | if (device->private) | 118 | kfree(device->private); |
119 | kfree(device->private); | ||
120 | free_page((unsigned long) device->erp_mem); | 119 | free_page((unsigned long) device->erp_mem); |
121 | free_pages((unsigned long) device->ccw_mem, 1); | 120 | free_pages((unsigned long) device->ccw_mem, 1); |
122 | kfree(device); | 121 | kfree(device); |
@@ -539,8 +538,7 @@ dasd_kmalloc_request(char *magic, int cplength, int datasize, | |||
539 | if (datasize > 0) { | 538 | if (datasize > 0) { |
540 | cqr->data = kmalloc(datasize, GFP_ATOMIC | GFP_DMA); | 539 | cqr->data = kmalloc(datasize, GFP_ATOMIC | GFP_DMA); |
541 | if (cqr->data == NULL) { | 540 | if (cqr->data == NULL) { |
542 | if (cqr->cpaddr != NULL) | 541 | kfree(cqr->cpaddr); |
543 | kfree(cqr->cpaddr); | ||
544 | kfree(cqr); | 542 | kfree(cqr); |
545 | return ERR_PTR(-ENOMEM); | 543 | return ERR_PTR(-ENOMEM); |
546 | } | 544 | } |
@@ -615,10 +613,8 @@ dasd_kfree_request(struct dasd_ccw_req * cqr, struct dasd_device * device) | |||
615 | clear_normalized_cda(ccw); | 613 | clear_normalized_cda(ccw); |
616 | } while (ccw++->flags & (CCW_FLAG_CC | CCW_FLAG_DC)); | 614 | } while (ccw++->flags & (CCW_FLAG_CC | CCW_FLAG_DC)); |
617 | #endif | 615 | #endif |
618 | if (cqr->cpaddr != NULL) | 616 | kfree(cqr->cpaddr); |
619 | kfree(cqr->cpaddr); | 617 | kfree(cqr->data); |
620 | if (cqr->data != NULL) | ||
621 | kfree(cqr->data); | ||
622 | kfree(cqr); | 618 | kfree(cqr); |
623 | dasd_put_device(device); | 619 | dasd_put_device(device); |
624 | } | 620 | } |
diff --git a/drivers/s390/block/dasd_devmap.c b/drivers/s390/block/dasd_devmap.c index bda896d9d788..caee16a3dc62 100644 --- a/drivers/s390/block/dasd_devmap.c +++ b/drivers/s390/block/dasd_devmap.c | |||
@@ -387,8 +387,7 @@ dasd_add_busid(char *bus_id, int features) | |||
387 | new = 0; | 387 | new = 0; |
388 | } | 388 | } |
389 | spin_unlock(&dasd_devmap_lock); | 389 | spin_unlock(&dasd_devmap_lock); |
390 | if (new) | 390 | kfree(new); |
391 | kfree(new); | ||
392 | return devmap; | 391 | return devmap; |
393 | } | 392 | } |
394 | 393 | ||
diff --git a/drivers/s390/block/dasd_diag.c b/drivers/s390/block/dasd_diag.c index 7478423b53bb..ab8754e566bc 100644 --- a/drivers/s390/block/dasd_diag.c +++ b/drivers/s390/block/dasd_diag.c | |||
@@ -6,7 +6,7 @@ | |||
6 | * Bugreports.to..: <Linux390@de.ibm.com> | 6 | * Bugreports.to..: <Linux390@de.ibm.com> |
7 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 | 7 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 |
8 | * | 8 | * |
9 | * $Revision: 1.49 $ | 9 | * $Revision: 1.51 $ |
10 | */ | 10 | */ |
11 | 11 | ||
12 | #include <linux/config.h> | 12 | #include <linux/config.h> |
@@ -67,9 +67,9 @@ static const u8 DASD_DIAG_CMS1[] = { 0xc3, 0xd4, 0xe2, 0xf1 };/* EBCDIC CMS1 */ | |||
67 | static __inline__ int | 67 | static __inline__ int |
68 | dia250(void *iob, int cmd) | 68 | dia250(void *iob, int cmd) |
69 | { | 69 | { |
70 | typedef struct { | 70 | typedef union { |
71 | char _[max(sizeof (struct dasd_diag_init_io), | 71 | struct dasd_diag_init_io init_io; |
72 | sizeof (struct dasd_diag_rw_io))]; | 72 | struct dasd_diag_rw_io rw_io; |
73 | } addr_type; | 73 | } addr_type; |
74 | int rc; | 74 | int rc; |
75 | 75 | ||
@@ -190,7 +190,7 @@ dasd_start_diag(struct dasd_ccw_req * cqr) | |||
190 | private->iob.flags = DASD_DIAG_RWFLAG_ASYNC; | 190 | private->iob.flags = DASD_DIAG_RWFLAG_ASYNC; |
191 | private->iob.block_count = dreq->block_count; | 191 | private->iob.block_count = dreq->block_count; |
192 | private->iob.interrupt_params = (addr_t) cqr; | 192 | private->iob.interrupt_params = (addr_t) cqr; |
193 | private->iob.bio_list = __pa(dreq->bio); | 193 | private->iob.bio_list = dreq->bio; |
194 | private->iob.flaga = DASD_DIAG_FLAGA_DEFAULT; | 194 | private->iob.flaga = DASD_DIAG_FLAGA_DEFAULT; |
195 | 195 | ||
196 | cqr->startclk = get_clock(); | 196 | cqr->startclk = get_clock(); |
@@ -394,47 +394,57 @@ dasd_diag_check_device(struct dasd_device *device) | |||
394 | memset(&bio, 0, sizeof (struct dasd_diag_bio)); | 394 | memset(&bio, 0, sizeof (struct dasd_diag_bio)); |
395 | bio.type = MDSK_READ_REQ; | 395 | bio.type = MDSK_READ_REQ; |
396 | bio.block_number = private->pt_block + 1; | 396 | bio.block_number = private->pt_block + 1; |
397 | bio.buffer = __pa(label); | 397 | bio.buffer = label; |
398 | memset(&private->iob, 0, sizeof (struct dasd_diag_rw_io)); | 398 | memset(&private->iob, 0, sizeof (struct dasd_diag_rw_io)); |
399 | private->iob.dev_nr = rdc_data->dev_nr; | 399 | private->iob.dev_nr = rdc_data->dev_nr; |
400 | private->iob.key = 0; | 400 | private->iob.key = 0; |
401 | private->iob.flags = 0; /* do synchronous io */ | 401 | private->iob.flags = 0; /* do synchronous io */ |
402 | private->iob.block_count = 1; | 402 | private->iob.block_count = 1; |
403 | private->iob.interrupt_params = 0; | 403 | private->iob.interrupt_params = 0; |
404 | private->iob.bio_list = __pa(&bio); | 404 | private->iob.bio_list = &bio; |
405 | private->iob.flaga = DASD_DIAG_FLAGA_DEFAULT; | 405 | private->iob.flaga = DASD_DIAG_FLAGA_DEFAULT; |
406 | rc = dia250(&private->iob, RW_BIO); | 406 | rc = dia250(&private->iob, RW_BIO); |
407 | if (rc == 0 || rc == 3) | 407 | if (rc == 3) { |
408 | break; | 408 | DEV_MESSAGE(KERN_WARNING, device, "%s", |
409 | "DIAG call failed"); | ||
410 | rc = -EOPNOTSUPP; | ||
411 | goto out; | ||
412 | } | ||
409 | mdsk_term_io(device); | 413 | mdsk_term_io(device); |
414 | if (rc == 0) | ||
415 | break; | ||
410 | } | 416 | } |
411 | if (rc == 3) { | 417 | if (bsize > PAGE_SIZE) { |
412 | DEV_MESSAGE(KERN_WARNING, device, "%s", "DIAG call failed"); | ||
413 | rc = -EOPNOTSUPP; | ||
414 | } else if (rc != 0) { | ||
415 | DEV_MESSAGE(KERN_WARNING, device, "device access failed " | 418 | DEV_MESSAGE(KERN_WARNING, device, "device access failed " |
416 | "(rc=%d)", rc); | 419 | "(rc=%d)", rc); |
417 | rc = -EIO; | 420 | rc = -EIO; |
421 | goto out; | ||
422 | } | ||
423 | /* check for label block */ | ||
424 | if (memcmp(label->label_id, DASD_DIAG_CMS1, | ||
425 | sizeof(DASD_DIAG_CMS1)) == 0) { | ||
426 | /* get formatted blocksize from label block */ | ||
427 | bsize = (unsigned int) label->block_size; | ||
428 | device->blocks = (unsigned long) label->block_count; | ||
429 | } else | ||
430 | device->blocks = end_block; | ||
431 | device->bp_block = bsize; | ||
432 | device->s2b_shift = 0; /* bits to shift 512 to get a block */ | ||
433 | for (sb = 512; sb < bsize; sb = sb << 1) | ||
434 | device->s2b_shift++; | ||
435 | rc = mdsk_init_io(device, device->bp_block, 0, NULL); | ||
436 | if (rc) { | ||
437 | DEV_MESSAGE(KERN_WARNING, device, "DIAG initialization " | ||
438 | "failed (rc=%d)", rc); | ||
439 | rc = -EIO; | ||
418 | } else { | 440 | } else { |
419 | if (memcmp(label->label_id, DASD_DIAG_CMS1, | ||
420 | sizeof(DASD_DIAG_CMS1)) == 0) { | ||
421 | /* get formatted blocksize from label block */ | ||
422 | bsize = (unsigned int) label->block_size; | ||
423 | device->blocks = (unsigned long) label->block_count; | ||
424 | } else | ||
425 | device->blocks = end_block; | ||
426 | device->bp_block = bsize; | ||
427 | device->s2b_shift = 0; /* bits to shift 512 to get a block */ | ||
428 | for (sb = 512; sb < bsize; sb = sb << 1) | ||
429 | device->s2b_shift++; | ||
430 | |||
431 | DEV_MESSAGE(KERN_INFO, device, | 441 | DEV_MESSAGE(KERN_INFO, device, |
432 | "(%ld B/blk): %ldkB", | 442 | "(%ld B/blk): %ldkB", |
433 | (unsigned long) device->bp_block, | 443 | (unsigned long) device->bp_block, |
434 | (unsigned long) (device->blocks << | 444 | (unsigned long) (device->blocks << |
435 | device->s2b_shift) >> 1); | 445 | device->s2b_shift) >> 1); |
436 | rc = 0; | ||
437 | } | 446 | } |
447 | out: | ||
438 | free_page((long) label); | 448 | free_page((long) label); |
439 | return rc; | 449 | return rc; |
440 | } | 450 | } |
@@ -529,7 +539,7 @@ dasd_diag_build_cp(struct dasd_device * device, struct request *req) | |||
529 | memset(dbio, 0, sizeof (struct dasd_diag_bio)); | 539 | memset(dbio, 0, sizeof (struct dasd_diag_bio)); |
530 | dbio->type = rw_cmd; | 540 | dbio->type = rw_cmd; |
531 | dbio->block_number = recid + 1; | 541 | dbio->block_number = recid + 1; |
532 | dbio->buffer = __pa(dst); | 542 | dbio->buffer = dst; |
533 | dbio++; | 543 | dbio++; |
534 | dst += blksize; | 544 | dst += blksize; |
535 | recid++; | 545 | recid++; |
diff --git a/drivers/s390/block/dasd_diag.h b/drivers/s390/block/dasd_diag.h index b26eb28df4bf..df31484d73a7 100644 --- a/drivers/s390/block/dasd_diag.h +++ b/drivers/s390/block/dasd_diag.h | |||
@@ -6,7 +6,7 @@ | |||
6 | * Bugreports.to..: <Linux390@de.ibm.com> | 6 | * Bugreports.to..: <Linux390@de.ibm.com> |
7 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 | 7 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 |
8 | * | 8 | * |
9 | * $Revision: 1.7 $ | 9 | * $Revision: 1.8 $ |
10 | */ | 10 | */ |
11 | 11 | ||
12 | #define MDSK_WRITE_REQ 0x01 | 12 | #define MDSK_WRITE_REQ 0x01 |
@@ -78,7 +78,7 @@ struct dasd_diag_bio { | |||
78 | u8 spare1[2]; | 78 | u8 spare1[2]; |
79 | u32 alet; | 79 | u32 alet; |
80 | blocknum_t block_number; | 80 | blocknum_t block_number; |
81 | u64 buffer; | 81 | void *buffer; |
82 | } __attribute__ ((packed, aligned(8))); | 82 | } __attribute__ ((packed, aligned(8))); |
83 | 83 | ||
84 | struct dasd_diag_init_io { | 84 | struct dasd_diag_init_io { |
@@ -104,7 +104,7 @@ struct dasd_diag_rw_io { | |||
104 | u32 alet; | 104 | u32 alet; |
105 | u8 spare3[4]; | 105 | u8 spare3[4]; |
106 | u64 interrupt_params; | 106 | u64 interrupt_params; |
107 | u64 bio_list; | 107 | struct dasd_diag_bio *bio_list; |
108 | u8 spare4[8]; | 108 | u8 spare4[8]; |
109 | } __attribute__ ((packed, aligned(8))); | 109 | } __attribute__ ((packed, aligned(8))); |
110 | #else /* CONFIG_ARCH_S390X */ | 110 | #else /* CONFIG_ARCH_S390X */ |
@@ -119,7 +119,7 @@ struct dasd_diag_bio { | |||
119 | u16 spare1; | 119 | u16 spare1; |
120 | blocknum_t block_number; | 120 | blocknum_t block_number; |
121 | u32 alet; | 121 | u32 alet; |
122 | u32 buffer; | 122 | void *buffer; |
123 | } __attribute__ ((packed, aligned(8))); | 123 | } __attribute__ ((packed, aligned(8))); |
124 | 124 | ||
125 | struct dasd_diag_init_io { | 125 | struct dasd_diag_init_io { |
@@ -142,7 +142,7 @@ struct dasd_diag_rw_io { | |||
142 | u8 spare2[2]; | 142 | u8 spare2[2]; |
143 | u32 block_count; | 143 | u32 block_count; |
144 | u32 alet; | 144 | u32 alet; |
145 | u32 bio_list; | 145 | struct dasd_diag_bio *bio_list; |
146 | u32 interrupt_params; | 146 | u32 interrupt_params; |
147 | u8 spare3[20]; | 147 | u8 spare3[20]; |
148 | } __attribute__ ((packed, aligned(8))); | 148 | } __attribute__ ((packed, aligned(8))); |
diff --git a/drivers/s390/char/con3215.c b/drivers/s390/char/con3215.c index f11a67fda40e..75419cf9d353 100644 --- a/drivers/s390/char/con3215.c +++ b/drivers/s390/char/con3215.c | |||
@@ -727,8 +727,7 @@ raw3215_remove (struct ccw_device *cdev) | |||
727 | raw = cdev->dev.driver_data; | 727 | raw = cdev->dev.driver_data; |
728 | if (raw) { | 728 | if (raw) { |
729 | cdev->dev.driver_data = NULL; | 729 | cdev->dev.driver_data = NULL; |
730 | if (raw->buffer) | 730 | kfree(raw->buffer); |
731 | kfree(raw->buffer); | ||
732 | kfree(raw); | 731 | kfree(raw); |
733 | } | 732 | } |
734 | } | 733 | } |
diff --git a/drivers/s390/char/keyboard.c b/drivers/s390/char/keyboard.c index fd43d99b45a3..5bda2340a39d 100644 --- a/drivers/s390/char/keyboard.c +++ b/drivers/s390/char/keyboard.c | |||
@@ -99,13 +99,11 @@ out_fn_handler: | |||
99 | kfree(kbd->fn_handler); | 99 | kfree(kbd->fn_handler); |
100 | out_func: | 100 | out_func: |
101 | for (i = 0; i < ARRAY_SIZE(func_table); i++) | 101 | for (i = 0; i < ARRAY_SIZE(func_table); i++) |
102 | if (kbd->func_table[i]) | 102 | kfree(kbd->func_table[i]); |
103 | kfree(kbd->func_table[i]); | ||
104 | kfree(kbd->func_table); | 103 | kfree(kbd->func_table); |
105 | out_maps: | 104 | out_maps: |
106 | for (i = 0; i < ARRAY_SIZE(key_maps); i++) | 105 | for (i = 0; i < ARRAY_SIZE(key_maps); i++) |
107 | if (kbd->key_maps[i]) | 106 | kfree(kbd->key_maps[i]); |
108 | kfree(kbd->key_maps[i]); | ||
109 | kfree(kbd->key_maps); | 107 | kfree(kbd->key_maps); |
110 | out_kbd: | 108 | out_kbd: |
111 | kfree(kbd); | 109 | kfree(kbd); |
@@ -121,12 +119,10 @@ kbd_free(struct kbd_data *kbd) | |||
121 | kfree(kbd->accent_table); | 119 | kfree(kbd->accent_table); |
122 | kfree(kbd->fn_handler); | 120 | kfree(kbd->fn_handler); |
123 | for (i = 0; i < ARRAY_SIZE(func_table); i++) | 121 | for (i = 0; i < ARRAY_SIZE(func_table); i++) |
124 | if (kbd->func_table[i]) | 122 | kfree(kbd->func_table[i]); |
125 | kfree(kbd->func_table[i]); | ||
126 | kfree(kbd->func_table); | 123 | kfree(kbd->func_table); |
127 | for (i = 0; i < ARRAY_SIZE(key_maps); i++) | 124 | for (i = 0; i < ARRAY_SIZE(key_maps); i++) |
128 | if (kbd->key_maps[i]) | 125 | kfree(kbd->key_maps[i]); |
129 | kfree(kbd->key_maps[i]); | ||
130 | kfree(kbd->key_maps); | 126 | kfree(kbd->key_maps); |
131 | kfree(kbd); | 127 | kfree(kbd); |
132 | } | 128 | } |
@@ -452,8 +448,7 @@ do_kdgkb_ioctl(struct kbd_data *kbd, struct kbsentry __user *u_kbs, | |||
452 | return -EFAULT; | 448 | return -EFAULT; |
453 | } | 449 | } |
454 | p[len] = 0; | 450 | p[len] = 0; |
455 | if (kbd->func_table[kb_func]) | 451 | kfree(kbd->func_table[kb_func]); |
456 | kfree(kbd->func_table[kb_func]); | ||
457 | kbd->func_table[kb_func] = p; | 452 | kbd->func_table[kb_func] = p; |
458 | break; | 453 | break; |
459 | } | 454 | } |
diff --git a/drivers/s390/char/raw3270.c b/drivers/s390/char/raw3270.c index d66946443dfc..f5b7d360fc10 100644 --- a/drivers/s390/char/raw3270.c +++ b/drivers/s390/char/raw3270.c | |||
@@ -183,8 +183,7 @@ raw3270_request_alloc_bootmem(size_t size) | |||
183 | void | 183 | void |
184 | raw3270_request_free (struct raw3270_request *rq) | 184 | raw3270_request_free (struct raw3270_request *rq) |
185 | { | 185 | { |
186 | if (rq->buffer) | 186 | kfree(rq->buffer); |
187 | kfree(rq->buffer); | ||
188 | kfree(rq); | 187 | kfree(rq); |
189 | } | 188 | } |
190 | 189 | ||
diff --git a/drivers/s390/char/tape_core.c b/drivers/s390/char/tape_core.c index 6c52e8307dc5..8f486e1a8507 100644 --- a/drivers/s390/char/tape_core.c +++ b/drivers/s390/char/tape_core.c | |||
@@ -682,8 +682,7 @@ tape_alloc_request(int cplength, int datasize) | |||
682 | request->cpdata = kmalloc(datasize, GFP_KERNEL | GFP_DMA); | 682 | request->cpdata = kmalloc(datasize, GFP_KERNEL | GFP_DMA); |
683 | if (request->cpdata == NULL) { | 683 | if (request->cpdata == NULL) { |
684 | DBF_EXCEPTION(1, "cqra nomem\n"); | 684 | DBF_EXCEPTION(1, "cqra nomem\n"); |
685 | if (request->cpaddr != NULL) | 685 | kfree(request->cpaddr); |
686 | kfree(request->cpaddr); | ||
687 | kfree(request); | 686 | kfree(request); |
688 | return ERR_PTR(-ENOMEM); | 687 | return ERR_PTR(-ENOMEM); |
689 | } | 688 | } |
@@ -706,10 +705,8 @@ tape_free_request (struct tape_request * request) | |||
706 | if (request->device != NULL) { | 705 | if (request->device != NULL) { |
707 | request->device = tape_put_device(request->device); | 706 | request->device = tape_put_device(request->device); |
708 | } | 707 | } |
709 | if (request->cpdata != NULL) | 708 | kfree(request->cpdata); |
710 | kfree(request->cpdata); | 709 | kfree(request->cpaddr); |
711 | if (request->cpaddr != NULL) | ||
712 | kfree(request->cpaddr); | ||
713 | kfree(request); | 710 | kfree(request); |
714 | } | 711 | } |
715 | 712 | ||
diff --git a/drivers/s390/char/vmcp.c b/drivers/s390/char/vmcp.c index 8990d8076e7d..19762f3476aa 100644 --- a/drivers/s390/char/vmcp.c +++ b/drivers/s390/char/vmcp.c | |||
@@ -103,8 +103,10 @@ vmcp_write(struct file *file, const char __user * buff, size_t count, | |||
103 | } | 103 | } |
104 | cmd[count] = '\0'; | 104 | cmd[count] = '\0'; |
105 | session = (struct vmcp_session *)file->private_data; | 105 | session = (struct vmcp_session *)file->private_data; |
106 | if (down_interruptible(&session->mutex)) | 106 | if (down_interruptible(&session->mutex)) { |
107 | kfree(cmd); | ||
107 | return -ERESTARTSYS; | 108 | return -ERESTARTSYS; |
109 | } | ||
108 | if (!session->response) | 110 | if (!session->response) |
109 | session->response = (char *)__get_free_pages(GFP_KERNEL | 111 | session->response = (char *)__get_free_pages(GFP_KERNEL |
110 | | __GFP_REPEAT | GFP_DMA, | 112 | | __GFP_REPEAT | GFP_DMA, |
diff --git a/drivers/s390/cio/ccwgroup.c b/drivers/s390/cio/ccwgroup.c index dbb3eb0e330b..e7bd7f37f080 100644 --- a/drivers/s390/cio/ccwgroup.c +++ b/drivers/s390/cio/ccwgroup.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * drivers/s390/cio/ccwgroup.c | 2 | * drivers/s390/cio/ccwgroup.c |
3 | * bus driver for ccwgroup | 3 | * bus driver for ccwgroup |
4 | * $Revision: 1.29 $ | 4 | * $Revision: 1.32 $ |
5 | * | 5 | * |
6 | * Copyright (C) 2002 IBM Deutschland Entwicklung GmbH, | 6 | * Copyright (C) 2002 IBM Deutschland Entwicklung GmbH, |
7 | * IBM Corporation | 7 | * IBM Corporation |
@@ -274,7 +274,7 @@ ccwgroup_set_online(struct ccwgroup_device *gdev) | |||
274 | goto out; | 274 | goto out; |
275 | } | 275 | } |
276 | gdrv = to_ccwgroupdrv (gdev->dev.driver); | 276 | gdrv = to_ccwgroupdrv (gdev->dev.driver); |
277 | if ((ret = gdrv->set_online(gdev))) | 277 | if ((ret = gdrv->set_online ? gdrv->set_online(gdev) : 0)) |
278 | goto out; | 278 | goto out; |
279 | 279 | ||
280 | gdev->state = CCWGROUP_ONLINE; | 280 | gdev->state = CCWGROUP_ONLINE; |
@@ -300,7 +300,7 @@ ccwgroup_set_offline(struct ccwgroup_device *gdev) | |||
300 | goto out; | 300 | goto out; |
301 | } | 301 | } |
302 | gdrv = to_ccwgroupdrv (gdev->dev.driver); | 302 | gdrv = to_ccwgroupdrv (gdev->dev.driver); |
303 | if ((ret = gdrv->set_offline(gdev))) | 303 | if ((ret = gdrv->set_offline ? gdrv->set_offline(gdev) : 0)) |
304 | goto out; | 304 | goto out; |
305 | 305 | ||
306 | gdev->state = CCWGROUP_OFFLINE; | 306 | gdev->state = CCWGROUP_OFFLINE; |
diff --git a/drivers/s390/cio/cmf.c b/drivers/s390/cio/cmf.c index c05b069c2996..b978f7fe8327 100644 --- a/drivers/s390/cio/cmf.c +++ b/drivers/s390/cio/cmf.c | |||
@@ -642,8 +642,7 @@ static void | |||
642 | free_cmbe (struct ccw_device *cdev) | 642 | free_cmbe (struct ccw_device *cdev) |
643 | { | 643 | { |
644 | spin_lock_irq(cdev->ccwlock); | 644 | spin_lock_irq(cdev->ccwlock); |
645 | if (cdev->private->cmb) | 645 | kfree(cdev->private->cmb); |
646 | kfree(cdev->private->cmb); | ||
647 | cdev->private->cmb = NULL; | 646 | cdev->private->cmb = NULL; |
648 | spin_unlock_irq(cdev->ccwlock); | 647 | spin_unlock_irq(cdev->ccwlock); |
649 | 648 | ||
diff --git a/drivers/s390/cio/device_ops.c b/drivers/s390/cio/device_ops.c index ad3fe5aeb663..85a3026e6900 100644 --- a/drivers/s390/cio/device_ops.c +++ b/drivers/s390/cio/device_ops.c | |||
@@ -550,10 +550,8 @@ ccw_device_stlck(struct ccw_device *cdev) | |||
550 | /* Clear irb. */ | 550 | /* Clear irb. */ |
551 | memset(&cdev->private->irb, 0, sizeof(struct irb)); | 551 | memset(&cdev->private->irb, 0, sizeof(struct irb)); |
552 | out_unlock: | 552 | out_unlock: |
553 | if (buf) | 553 | kfree(buf); |
554 | kfree(buf); | 554 | kfree(buf2); |
555 | if (buf2) | ||
556 | kfree(buf2); | ||
557 | spin_unlock_irqrestore(&sch->lock, flags); | 555 | spin_unlock_irqrestore(&sch->lock, flags); |
558 | return ret; | 556 | return ret; |
559 | } | 557 | } |
diff --git a/drivers/s390/cio/qdio.c b/drivers/s390/cio/qdio.c index 381f339e3200..eb39218b925e 100644 --- a/drivers/s390/cio/qdio.c +++ b/drivers/s390/cio/qdio.c | |||
@@ -56,7 +56,7 @@ | |||
56 | #include "ioasm.h" | 56 | #include "ioasm.h" |
57 | #include "chsc.h" | 57 | #include "chsc.h" |
58 | 58 | ||
59 | #define VERSION_QDIO_C "$Revision: 1.101 $" | 59 | #define VERSION_QDIO_C "$Revision: 1.108 $" |
60 | 60 | ||
61 | /****************** MODULE PARAMETER VARIABLES ********************/ | 61 | /****************** MODULE PARAMETER VARIABLES ********************/ |
62 | MODULE_AUTHOR("Utz Bacher <utz.bacher@de.ibm.com>"); | 62 | MODULE_AUTHOR("Utz Bacher <utz.bacher@de.ibm.com>"); |
@@ -1338,16 +1338,14 @@ qdio_release_irq_memory(struct qdio_irq *irq_ptr) | |||
1338 | if (!irq_ptr->input_qs[i]) | 1338 | if (!irq_ptr->input_qs[i]) |
1339 | goto next; | 1339 | goto next; |
1340 | 1340 | ||
1341 | if (irq_ptr->input_qs[i]->slib) | 1341 | kfree(irq_ptr->input_qs[i]->slib); |
1342 | kfree(irq_ptr->input_qs[i]->slib); | ||
1343 | kfree(irq_ptr->input_qs[i]); | 1342 | kfree(irq_ptr->input_qs[i]); |
1344 | 1343 | ||
1345 | next: | 1344 | next: |
1346 | if (!irq_ptr->output_qs[i]) | 1345 | if (!irq_ptr->output_qs[i]) |
1347 | continue; | 1346 | continue; |
1348 | 1347 | ||
1349 | if (irq_ptr->output_qs[i]->slib) | 1348 | kfree(irq_ptr->output_qs[i]->slib); |
1350 | kfree(irq_ptr->output_qs[i]->slib); | ||
1351 | kfree(irq_ptr->output_qs[i]); | 1349 | kfree(irq_ptr->output_qs[i]); |
1352 | 1350 | ||
1353 | } | 1351 | } |
@@ -2873,10 +2871,10 @@ qdio_establish(struct qdio_initialize *init_data) | |||
2873 | return result; | 2871 | return result; |
2874 | } | 2872 | } |
2875 | 2873 | ||
2876 | wait_event_interruptible_timeout(cdev->private->wait_q, | 2874 | /* Timeout is cared for already by using ccw_device_start_timeout(). */ |
2875 | wait_event_interruptible(cdev->private->wait_q, | ||
2877 | irq_ptr->state == QDIO_IRQ_STATE_ESTABLISHED || | 2876 | irq_ptr->state == QDIO_IRQ_STATE_ESTABLISHED || |
2878 | irq_ptr->state == QDIO_IRQ_STATE_ERR, | 2877 | irq_ptr->state == QDIO_IRQ_STATE_ERR); |
2879 | QDIO_ESTABLISH_TIMEOUT); | ||
2880 | 2878 | ||
2881 | if (irq_ptr->state == QDIO_IRQ_STATE_ESTABLISHED) | 2879 | if (irq_ptr->state == QDIO_IRQ_STATE_ESTABLISHED) |
2882 | result = 0; | 2880 | result = 0; |
@@ -3315,8 +3313,7 @@ qdio_get_qdio_memory(void) | |||
3315 | static void | 3313 | static void |
3316 | qdio_release_qdio_memory(void) | 3314 | qdio_release_qdio_memory(void) |
3317 | { | 3315 | { |
3318 | if (indicators) | 3316 | kfree(indicators); |
3319 | kfree(indicators); | ||
3320 | } | 3317 | } |
3321 | 3318 | ||
3322 | static void | 3319 | static void |
diff --git a/drivers/s390/crypto/z90main.c b/drivers/s390/crypto/z90main.c index 0cb47eca91f3..04c2ef778ec6 100644 --- a/drivers/s390/crypto/z90main.c +++ b/drivers/s390/crypto/z90main.c | |||
@@ -3051,8 +3051,7 @@ destroy_crypto_device(int index) | |||
3051 | if (dev_ptr) { | 3051 | if (dev_ptr) { |
3052 | disabledFlag = dev_ptr->disabled; | 3052 | disabledFlag = dev_ptr->disabled; |
3053 | t = dev_ptr->dev_type; | 3053 | t = dev_ptr->dev_type; |
3054 | if (dev_ptr->dev_resp_p) | 3054 | kfree(dev_ptr->dev_resp_p); |
3055 | kfree(dev_ptr->dev_resp_p); | ||
3056 | kfree(dev_ptr); | 3055 | kfree(dev_ptr); |
3057 | } else { | 3056 | } else { |
3058 | disabledFlag = 0; | 3057 | disabledFlag = 0; |
@@ -3080,11 +3079,11 @@ static void | |||
3080 | destroy_z90crypt(void) | 3079 | destroy_z90crypt(void) |
3081 | { | 3080 | { |
3082 | int i; | 3081 | int i; |
3082 | |||
3083 | for (i = 0; i < z90crypt.max_count; i++) | 3083 | for (i = 0; i < z90crypt.max_count; i++) |
3084 | if (z90crypt.device_p[i]) | 3084 | if (z90crypt.device_p[i]) |
3085 | destroy_crypto_device(i); | 3085 | destroy_crypto_device(i); |
3086 | if (z90crypt.hdware_info) | 3086 | kfree(z90crypt.hdware_info); |
3087 | kfree((void *)z90crypt.hdware_info); | ||
3088 | memset((void *)&z90crypt, 0, sizeof(z90crypt)); | 3087 | memset((void *)&z90crypt, 0, sizeof(z90crypt)); |
3089 | } | 3088 | } |
3090 | 3089 | ||
diff --git a/drivers/s390/net/claw.c b/drivers/s390/net/claw.c index 3092473991a7..1a1c3decea72 100644 --- a/drivers/s390/net/claw.c +++ b/drivers/s390/net/claw.c | |||
@@ -2743,14 +2743,10 @@ probe_error( struct ccwgroup_device *cgdev) | |||
2743 | #endif | 2743 | #endif |
2744 | privptr=(struct claw_privbk *)cgdev->dev.driver_data; | 2744 | privptr=(struct claw_privbk *)cgdev->dev.driver_data; |
2745 | if (privptr!=NULL) { | 2745 | if (privptr!=NULL) { |
2746 | if (privptr->p_env != NULL) { | 2746 | kfree(privptr->p_env); |
2747 | kfree(privptr->p_env); | 2747 | privptr->p_env=NULL; |
2748 | privptr->p_env=NULL; | 2748 | kfree(privptr->p_mtc_envelope); |
2749 | } | 2749 | privptr->p_mtc_envelope=NULL; |
2750 | if (privptr->p_mtc_envelope!=NULL) { | ||
2751 | kfree(privptr->p_mtc_envelope); | ||
2752 | privptr->p_mtc_envelope=NULL; | ||
2753 | } | ||
2754 | kfree(privptr); | 2750 | kfree(privptr); |
2755 | privptr=NULL; | 2751 | privptr=NULL; |
2756 | } | 2752 | } |
@@ -4121,22 +4117,14 @@ claw_remove_device(struct ccwgroup_device *cgdev) | |||
4121 | if (cgdev->state == CCWGROUP_ONLINE) | 4117 | if (cgdev->state == CCWGROUP_ONLINE) |
4122 | claw_shutdown_device(cgdev); | 4118 | claw_shutdown_device(cgdev); |
4123 | claw_remove_files(&cgdev->dev); | 4119 | claw_remove_files(&cgdev->dev); |
4124 | if (priv->p_mtc_envelope!=NULL) { | 4120 | kfree(priv->p_mtc_envelope); |
4125 | kfree(priv->p_mtc_envelope); | 4121 | priv->p_mtc_envelope=NULL; |
4126 | priv->p_mtc_envelope=NULL; | 4122 | kfree(priv->p_env); |
4127 | } | 4123 | priv->p_env=NULL; |
4128 | if (priv->p_env != NULL) { | 4124 | kfree(priv->channel[0].irb); |
4129 | kfree(priv->p_env); | 4125 | priv->channel[0].irb=NULL; |
4130 | priv->p_env=NULL; | 4126 | kfree(priv->channel[1].irb); |
4131 | } | 4127 | priv->channel[1].irb=NULL; |
4132 | if (priv->channel[0].irb != NULL) { | ||
4133 | kfree(priv->channel[0].irb); | ||
4134 | priv->channel[0].irb=NULL; | ||
4135 | } | ||
4136 | if (priv->channel[1].irb != NULL) { | ||
4137 | kfree(priv->channel[1].irb); | ||
4138 | priv->channel[1].irb=NULL; | ||
4139 | } | ||
4140 | kfree(priv); | 4128 | kfree(priv); |
4141 | cgdev->dev.driver_data=NULL; | 4129 | cgdev->dev.driver_data=NULL; |
4142 | cgdev->cdev[READ]->dev.driver_data = NULL; | 4130 | cgdev->cdev[READ]->dev.driver_data = NULL; |
diff --git a/drivers/s390/net/fsm.c b/drivers/s390/net/fsm.c index 38f50b7129a2..24029bd9c7d0 100644 --- a/drivers/s390/net/fsm.c +++ b/drivers/s390/net/fsm.c | |||
@@ -78,8 +78,7 @@ kfree_fsm(fsm_instance *this) | |||
78 | { | 78 | { |
79 | if (this) { | 79 | if (this) { |
80 | if (this->f) { | 80 | if (this->f) { |
81 | if (this->f->jumpmatrix) | 81 | kfree(this->f->jumpmatrix); |
82 | kfree(this->f->jumpmatrix); | ||
83 | kfree(this->f); | 82 | kfree(this->f); |
84 | } | 83 | } |
85 | kfree(this); | 84 | kfree(this); |
diff --git a/drivers/s390/net/iucv.c b/drivers/s390/net/iucv.c index e08e74e16124..df7647c3c100 100644 --- a/drivers/s390/net/iucv.c +++ b/drivers/s390/net/iucv.c | |||
@@ -447,14 +447,10 @@ static void | |||
447 | iucv_exit(void) | 447 | iucv_exit(void) |
448 | { | 448 | { |
449 | iucv_retrieve_buffer(); | 449 | iucv_retrieve_buffer(); |
450 | if (iucv_external_int_buffer) { | 450 | kfree(iucv_external_int_buffer); |
451 | kfree(iucv_external_int_buffer); | 451 | iucv_external_int_buffer = NULL; |
452 | iucv_external_int_buffer = NULL; | 452 | kfree(iucv_param_pool); |
453 | } | 453 | iucv_param_pool = NULL; |
454 | if (iucv_param_pool) { | ||
455 | kfree(iucv_param_pool); | ||
456 | iucv_param_pool = NULL; | ||
457 | } | ||
458 | s390_root_dev_unregister(iucv_root); | 454 | s390_root_dev_unregister(iucv_root); |
459 | bus_unregister(&iucv_bus); | 455 | bus_unregister(&iucv_bus); |
460 | printk(KERN_INFO "IUCV lowlevel driver unloaded\n"); | 456 | printk(KERN_INFO "IUCV lowlevel driver unloaded\n"); |
diff --git a/drivers/s390/net/lcs.c b/drivers/s390/net/lcs.c index 46f34ba93ac5..1c8ad2fcad8a 100644 --- a/drivers/s390/net/lcs.c +++ b/drivers/s390/net/lcs.c | |||
@@ -145,8 +145,7 @@ lcs_free_channel(struct lcs_channel *channel) | |||
145 | 145 | ||
146 | LCS_DBF_TEXT(2, setup, "ichfree"); | 146 | LCS_DBF_TEXT(2, setup, "ichfree"); |
147 | for (cnt = 0; cnt < LCS_NUM_BUFFS; cnt++) { | 147 | for (cnt = 0; cnt < LCS_NUM_BUFFS; cnt++) { |
148 | if (channel->iob[cnt].data != NULL) | 148 | kfree(channel->iob[cnt].data); |
149 | kfree(channel->iob[cnt].data); | ||
150 | channel->iob[cnt].data = NULL; | 149 | channel->iob[cnt].data = NULL; |
151 | } | 150 | } |
152 | } | 151 | } |
diff --git a/drivers/s390/net/qeth_eddp.c b/drivers/s390/net/qeth_eddp.c index f94f1f25eec6..011915d5e243 100644 --- a/drivers/s390/net/qeth_eddp.c +++ b/drivers/s390/net/qeth_eddp.c | |||
@@ -62,8 +62,7 @@ qeth_eddp_free_context(struct qeth_eddp_context *ctx) | |||
62 | for (i = 0; i < ctx->num_pages; ++i) | 62 | for (i = 0; i < ctx->num_pages; ++i) |
63 | free_page((unsigned long)ctx->pages[i]); | 63 | free_page((unsigned long)ctx->pages[i]); |
64 | kfree(ctx->pages); | 64 | kfree(ctx->pages); |
65 | if (ctx->elements != NULL) | 65 | kfree(ctx->elements); |
66 | kfree(ctx->elements); | ||
67 | kfree(ctx); | 66 | kfree(ctx); |
68 | } | 67 | } |
69 | 68 | ||
diff --git a/drivers/s390/scsi/zfcp_aux.c b/drivers/s390/scsi/zfcp_aux.c index cab098556b44..c218b5c944a6 100644 --- a/drivers/s390/scsi/zfcp_aux.c +++ b/drivers/s390/scsi/zfcp_aux.c | |||
@@ -450,8 +450,7 @@ zfcp_cfdc_dev_ioctl(struct file *file, unsigned int command, | |||
450 | kfree(sg_list); | 450 | kfree(sg_list); |
451 | } | 451 | } |
452 | 452 | ||
453 | if (sense_data != NULL) | 453 | kfree(sense_data); |
454 | kfree(sense_data); | ||
455 | 454 | ||
456 | return retval; | 455 | return retval; |
457 | } | 456 | } |