In each case, if the NULL test is necessary, then the dereference should be moved below the NULL test. The semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // <smpl> @@ type T; expression E; identifier i,fld; statement S; @@ - T i = E->fld; + T i; ... when != E when != i if (E == NULL) S + i = E->fld; // </smpl>
Unified · Split
| @@ -81,11 +81,12 @@ static u8 cs5530_udma_filter(ide_drive_t *drive) · 80 unmodified lines | ||
| 81 | 81 | { |
| 82 | 82 | ide_hwif_t *hwif = drive->hwif; |
| 83 | 83 | ide_drive_t *mate = ide_get_pair_dev(drive); |
| 84 | − u16 *mateid = mate->id; | |
| 84 | + u16 *mateid; | |
| 85 | 85 | u8 mask = hwif->ultra_mask; |
| 86 | 86 | |
| 87 | 87 | if (mate == NULL) |
| 88 | 88 | goto out; |
| 89 | + mateid = mate->id; | |
| 89 | 90 | |
| 90 | 91 | if (ata_id_has_dma(mateid) && __ide_dma_bad_drive(mate) == 0) { |
| 91 | 92 | if ((mateid[ATA_ID_FIELD_VALID] & 4) && |
| @@ -104,11 +104,12 @@ static u8 sc1200_udma_filter(ide_drive_t *drive) · 103 unmodified lines | ||
| 104 | 104 | { |
| 105 | 105 | ide_hwif_t *hwif = drive->hwif; |
| 106 | 106 | ide_drive_t *mate = ide_get_pair_dev(drive); |
| 107 | − u16 *mateid = mate->id; | |
| 107 | + u16 *mateid; | |
| 108 | 108 | u8 mask = hwif->ultra_mask; |
| 109 | 109 | |
| 110 | 110 | if (mate == NULL) |
| 111 | 111 | goto out; |
| 112 | + mateid = mate->id; | |
| 112 | 113 | |
| 113 | 114 | if (ata_id_has_dma(mateid) && __ide_dma_bad_drive(mate) == 0) { |
| 114 | 115 | if ((mateid[ATA_ID_FIELD_VALID] & 4) && |