svn commit: r249105 - in head/sys/cam: ata scsi

Alexander Motin mav at FreeBSD.org
Thu Apr 4 20:57:59 UTC 2013


On 04.04.2013 23:53, Adrian Chadd wrote:
> Hi,
>
> Isn't this a prime candidate to replace with KASSERT()?

It could be, but NULL dereference attempt will crash system no less 
reliably then KASSERT.

> On 4 April 2013 12:04, Alexander Motin <mav at freebsd.org> wrote:
>> Author: mav
>> Date: Thu Apr  4 19:04:15 2013
>> New Revision: 249105
>> URL: http://svnweb.freebsd.org/changeset/base/249105
>>
>> Log:
>>    MFprojects/camlock r248930:
>>    Remove extra NULL checks. d_drv1 can never be NULL during periph life cycle.
>>
>>    MFC after:    2 weeks
>>
>> Modified:
>>    head/sys/cam/ata/ata_da.c
>>    head/sys/cam/scsi/scsi_cd.c
>>    head/sys/cam/scsi/scsi_da.c
>>
>> Modified: head/sys/cam/ata/ata_da.c
>> ==============================================================================
>> --- head/sys/cam/ata/ata_da.c   Thu Apr  4 18:59:29 2013        (r249104)
>> +++ head/sys/cam/ata/ata_da.c   Thu Apr  4 19:04:15 2013        (r249105)
>> @@ -527,10 +527,6 @@ adaopen(struct disk *dp)
>>          int error;
>>
>>          periph = (struct cam_periph *)dp->d_drv1;
>> -       if (periph == NULL) {
>> -               return (ENXIO);
>> -       }
>> -
>>          if (cam_periph_acquire(periph) != CAM_REQ_CMP) {
>>                  return(ENXIO);
>>          }
>> @@ -566,9 +562,6 @@ adaclose(struct disk *dp)
>>          union ccb *ccb;
>>
>>          periph = (struct cam_periph *)dp->d_drv1;
>> -       if (periph == NULL)
>> -               return (ENXIO);
>> -
>>          cam_periph_lock(periph);
>>          if (cam_periph_hold(periph, PRIBIO) != 0) {
>>                  cam_periph_unlock(periph);
>> @@ -646,10 +639,6 @@ adastrategy(struct bio *bp)
>>          struct ada_softc *softc;
>>
>>          periph = (struct cam_periph *)bp->bio_disk->d_drv1;
>> -       if (periph == NULL) {
>> -               biofinish(bp, NULL, ENXIO);
>> -               return;
>> -       }
>>          softc = (struct ada_softc *)periph->softc;
>>
>>          cam_periph_lock(periph);
>> @@ -704,8 +693,6 @@ adadump(void *arg, void *virtual, vm_off
>>
>>          dp = arg;
>>          periph = dp->d_drv1;
>> -       if (periph == NULL)
>> -               return (ENXIO);
>>          softc = (struct ada_softc *)periph->softc;
>>          cam_periph_lock(periph);
>>          secsize = softc->params.secsize;
>> @@ -1038,9 +1025,6 @@ adagetattr(struct bio *bp)
>>          struct cam_periph *periph;
>>
>>          periph = (struct cam_periph *)bp->bio_disk->d_drv1;
>> -       if (periph == NULL)
>> -               return (ENXIO);
>> -
>>          cam_periph_lock(periph);
>>          ret = xpt_getattr(bp->bio_data, bp->bio_length, bp->bio_attribute,
>>              periph->path);
>>
>> Modified: head/sys/cam/scsi/scsi_cd.c
>> ==============================================================================
>> --- head/sys/cam/scsi/scsi_cd.c Thu Apr  4 18:59:29 2013        (r249104)
>> +++ head/sys/cam/scsi/scsi_cd.c Thu Apr  4 19:04:15 2013        (r249105)
>> @@ -386,7 +386,6 @@ cddiskgonecb(struct disk *dp)
>>          struct cam_periph *periph;
>>
>>          periph = (struct cam_periph *)dp->d_drv1;
>> -
>>          cam_periph_release(periph);
>>   }
>>
>> @@ -1073,9 +1072,6 @@ cdopen(struct disk *dp)
>>          int error;
>>
>>          periph = (struct cam_periph *)dp->d_drv1;
>> -       if (periph == NULL)
>> -               return (ENXIO);
>> -
>>          softc = (struct cd_softc *)periph->softc;
>>
>>          if (cam_periph_acquire(periph) != CAM_REQ_CMP)
>> @@ -1120,9 +1116,6 @@ cdclose(struct disk *dp)
>>          struct  cd_softc *softc;
>>
>>          periph = (struct cam_periph *)dp->d_drv1;
>> -       if (periph == NULL)
>> -               return (ENXIO);
>> -
>>          softc = (struct cd_softc *)periph->softc;
>>
>>          cam_periph_lock(periph);
>> @@ -1473,11 +1466,6 @@ cdstrategy(struct bio *bp)
>>          struct cd_softc *softc;
>>
>>          periph = (struct cam_periph *)bp->bio_disk->d_drv1;
>> -       if (periph == NULL) {
>> -               biofinish(bp, NULL, ENXIO);
>> -               return;
>> -       }
>> -
>>          cam_periph_lock(periph);
>>          CAM_DEBUG(periph->path, CAM_DEBUG_TRACE,
>>              ("cdstrategy(%p)\n", bp));
>> @@ -1972,9 +1960,6 @@ cdioctl(struct disk *dp, u_long cmd, voi
>>          int     nocopyout, error = 0;
>>
>>          periph = (struct cam_periph *)dp->d_drv1;
>> -       if (periph == NULL)
>> -               return(ENXIO);
>> -
>>          cam_periph_lock(periph);
>>
>>          softc = (struct cd_softc *)periph->softc;
>>
>> Modified: head/sys/cam/scsi/scsi_da.c
>> ==============================================================================
>> --- head/sys/cam/scsi/scsi_da.c Thu Apr  4 18:59:29 2013        (r249104)
>> +++ head/sys/cam/scsi/scsi_da.c Thu Apr  4 19:04:15 2013        (r249105)
>> @@ -962,10 +962,6 @@ daopen(struct disk *dp)
>>          int error;
>>
>>          periph = (struct cam_periph *)dp->d_drv1;
>> -       if (periph == NULL) {
>> -               return (ENXIO);
>> -       }
>> -
>>          if (cam_periph_acquire(periph) != CAM_REQ_CMP) {
>>                  return (ENXIO);
>>          }
>> @@ -1027,9 +1023,6 @@ daclose(struct disk *dp)
>>          struct  da_softc *softc;
>>
>>          periph = (struct cam_periph *)dp->d_drv1;
>> -       if (periph == NULL)
>> -               return (0);
>> -
>>          cam_periph_lock(periph);
>>          if (cam_periph_hold(periph, PRIBIO) != 0) {
>>                  cam_periph_unlock(periph);
>> @@ -1118,10 +1111,6 @@ dastrategy(struct bio *bp)
>>          struct da_softc *softc;
>>
>>          periph = (struct cam_periph *)bp->bio_disk->d_drv1;
>> -       if (periph == NULL) {
>> -               biofinish(bp, NULL, ENXIO);
>> -               return;
>> -       }
>>          softc = (struct da_softc *)periph->softc;
>>
>>          cam_periph_lock(periph);
>> @@ -1174,8 +1163,6 @@ dadump(void *arg, void *virtual, vm_offs
>>
>>          dp = arg;
>>          periph = dp->d_drv1;
>> -       if (periph == NULL)
>> -               return (ENXIO);
>>          softc = (struct da_softc *)periph->softc;
>>          cam_periph_lock(periph);
>>          secsize = softc->params.secsize;
>> @@ -1250,9 +1237,6 @@ dagetattr(struct bio *bp)
>>          struct cam_periph *periph;
>>
>>          periph = (struct cam_periph *)bp->bio_disk->d_drv1;
>> -       if (periph == NULL)
>> -               return (ENXIO);
>> -
>>          cam_periph_lock(periph);
>>          ret = xpt_getattr(bp->bio_data, bp->bio_length, bp->bio_attribute,
>>              periph->path);
>> @@ -1295,7 +1279,6 @@ dadiskgonecb(struct disk *dp)
>>          struct cam_periph *periph;
>>
>>          periph = (struct cam_periph *)dp->d_drv1;
>> -
>>          cam_periph_release(periph);
>>   }
>>


-- 
Alexander Motin


More information about the svn-src-all mailing list