OSDN Git Service

ide-cd: Drop unused sense buffers
authorKees Cook <keescook@chromium.org>
Tue, 31 Jul 2018 19:51:46 +0000 (12:51 -0700)
committerJens Axboe <axboe@kernel.dk>
Thu, 2 Aug 2018 21:19:44 +0000 (15:19 -0600)
This drops unused sense buffers from:

cdrom_eject()
cdrom_read_capacity()
cdrom_read_tocentry()
ide_cd_lockdoor()
ide_cd_read_toc()

Acked-by: David S. Miller <davem@davemloft.net>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/ide/ide-cd.c
drivers/ide/ide-cd.h
drivers/ide/ide-cd_ioctl.c

index 5f17838..a37dd38 100644 (file)
@@ -890,8 +890,7 @@ int cdrom_check_status(ide_drive_t *drive, struct request_sense *sense)
 }
 
 static int cdrom_read_capacity(ide_drive_t *drive, unsigned long *capacity,
-                              unsigned long *sectors_per_frame,
-                              struct request_sense *sense)
+                              unsigned long *sectors_per_frame)
 {
        struct {
                __be32 lba;
@@ -908,7 +907,7 @@ static int cdrom_read_capacity(ide_drive_t *drive, unsigned long *capacity,
        memset(cmd, 0, BLK_MAX_CDB);
        cmd[0] = GPCMD_READ_CDVD_CAPACITY;
 
-       stat = ide_cd_queue_pc(drive, cmd, 0, &capbuf, &len, sense, 0,
+       stat = ide_cd_queue_pc(drive, cmd, 0, &capbuf, &len, NULL, 0,
                               RQF_QUIET);
        if (stat)
                return stat;
@@ -944,8 +943,7 @@ static int cdrom_read_capacity(ide_drive_t *drive, unsigned long *capacity,
 }
 
 static int cdrom_read_tocentry(ide_drive_t *drive, int trackno, int msf_flag,
-                               int format, char *buf, int buflen,
-                               struct request_sense *sense)
+                               int format, char *buf, int buflen)
 {
        unsigned char cmd[BLK_MAX_CDB];
 
@@ -962,11 +960,11 @@ static int cdrom_read_tocentry(ide_drive_t *drive, int trackno, int msf_flag,
        if (msf_flag)
                cmd[1] = 2;
 
-       return ide_cd_queue_pc(drive, cmd, 0, buf, &buflen, sense, 0, RQF_QUIET);
+       return ide_cd_queue_pc(drive, cmd, 0, buf, &buflen, NULL, 0, RQF_QUIET);
 }
 
 /* Try to read the entire TOC for the disk into our internal buffer. */
-int ide_cd_read_toc(ide_drive_t *drive, struct request_sense *sense)
+int ide_cd_read_toc(ide_drive_t *drive)
 {
        int stat, ntracks, i;
        struct cdrom_info *info = drive->driver_data;
@@ -996,14 +994,13 @@ int ide_cd_read_toc(ide_drive_t *drive, struct request_sense *sense)
         * Check to see if the existing data is still valid. If it is,
         * just return.
         */
-       (void) cdrom_check_status(drive, sense);
+       (void) cdrom_check_status(drive, NULL);
 
        if (drive->atapi_flags & IDE_AFLAG_TOC_VALID)
                return 0;
 
        /* try to get the total cdrom capacity and sector size */
-       stat = cdrom_read_capacity(drive, &toc->capacity, &sectors_per_frame,
-                                  sense);
+       stat = cdrom_read_capacity(drive, &toc->capacity, &sectors_per_frame);
        if (stat)
                toc->capacity = 0x1fffff;
 
@@ -1016,7 +1013,7 @@ int ide_cd_read_toc(ide_drive_t *drive, struct request_sense *sense)
 
        /* first read just the header, so we know how long the TOC is */
        stat = cdrom_read_tocentry(drive, 0, 1, 0, (char *) &toc->hdr,
-                                   sizeof(struct atapi_toc_header), sense);
+                                   sizeof(struct atapi_toc_header));
        if (stat)
                return stat;
 
@@ -1036,7 +1033,7 @@ int ide_cd_read_toc(ide_drive_t *drive, struct request_sense *sense)
                                  (char *)&toc->hdr,
                                   sizeof(struct atapi_toc_header) +
                                   (ntracks + 1) *
-                                  sizeof(struct atapi_toc_entry), sense);
+                                  sizeof(struct atapi_toc_entry));
 
        if (stat && toc->hdr.first_track > 1) {
                /*
@@ -1056,8 +1053,7 @@ int ide_cd_read_toc(ide_drive_t *drive, struct request_sense *sense)
                                           (char *)&toc->hdr,
                                           sizeof(struct atapi_toc_header) +
                                           (ntracks + 1) *
-                                          sizeof(struct atapi_toc_entry),
-                                          sense);
+                                          sizeof(struct atapi_toc_entry));
                if (stat)
                        return stat;
 
@@ -1094,7 +1090,7 @@ int ide_cd_read_toc(ide_drive_t *drive, struct request_sense *sense)
        if (toc->hdr.first_track != CDROM_LEADOUT) {
                /* read the multisession information */
                stat = cdrom_read_tocentry(drive, 0, 0, 1, (char *)&ms_tmp,
-                                          sizeof(ms_tmp), sense);
+                                          sizeof(ms_tmp));
                if (stat)
                        return stat;
 
@@ -1108,7 +1104,7 @@ int ide_cd_read_toc(ide_drive_t *drive, struct request_sense *sense)
        if (drive->atapi_flags & IDE_AFLAG_TOCADDR_AS_BCD) {
                /* re-read multisession information using MSF format */
                stat = cdrom_read_tocentry(drive, 0, 1, 1, (char *)&ms_tmp,
-                                          sizeof(ms_tmp), sense);
+                                          sizeof(ms_tmp));
                if (stat)
                        return stat;
 
@@ -1412,7 +1408,7 @@ static sector_t ide_cdrom_capacity(ide_drive_t *drive)
 {
        unsigned long capacity, sectors_per_frame;
 
-       if (cdrom_read_capacity(drive, &capacity, &sectors_per_frame, NULL))
+       if (cdrom_read_capacity(drive, &capacity, &sectors_per_frame))
                return 0;
 
        return capacity * sectors_per_frame;
@@ -1710,9 +1706,8 @@ static unsigned int idecd_check_events(struct gendisk *disk,
 static int idecd_revalidate_disk(struct gendisk *disk)
 {
        struct cdrom_info *info = ide_drv_g(disk, cdrom_info);
-       struct request_sense sense;
 
-       ide_cd_read_toc(info->drive, &sense);
+       ide_cd_read_toc(info->drive);
 
        return  0;
 }
@@ -1736,7 +1731,6 @@ static int ide_cd_probe(ide_drive_t *drive)
 {
        struct cdrom_info *info;
        struct gendisk *g;
-       struct request_sense sense;
 
        ide_debug_log(IDE_DBG_PROBE, "driver_req: %s, media: 0x%x",
                                     drive->driver_req, drive->media);
@@ -1785,7 +1779,7 @@ static int ide_cd_probe(ide_drive_t *drive)
                goto failed;
        }
 
-       ide_cd_read_toc(drive, &sense);
+       ide_cd_read_toc(drive);
        g->fops = &idecd_ops;
        g->flags |= GENHD_FL_REMOVABLE | GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE;
        device_add_disk(&drive->gendev, g);
index 04f0f31..fc162fb 100644 (file)
@@ -99,7 +99,7 @@ void ide_cd_log_error(const char *, struct request *, struct request_sense *);
 /* ide-cd.c functions used by ide-cd_ioctl.c */
 int ide_cd_queue_pc(ide_drive_t *, const unsigned char *, int, void *,
                    unsigned *, struct request_sense *, int, req_flags_t);
-int ide_cd_read_toc(ide_drive_t *, struct request_sense *);
+int ide_cd_read_toc(ide_drive_t *);
 int ide_cdrom_get_capabilities(ide_drive_t *, u8 *);
 void ide_cdrom_update_speed(ide_drive_t *, u8 *);
 int cdrom_check_status(ide_drive_t *, struct request_sense *);
index b132240..1454054 100644 (file)
@@ -105,8 +105,7 @@ unsigned int ide_cdrom_check_events_real(struct cdrom_device_info *cdi,
 /* Eject the disk if EJECTFLAG is 0.
    If EJECTFLAG is 1, try to reload the disk. */
 static
-int cdrom_eject(ide_drive_t *drive, int ejectflag,
-               struct request_sense *sense)
+int cdrom_eject(ide_drive_t *drive, int ejectflag)
 {
        struct cdrom_info *cd = drive->driver_data;
        struct cdrom_device_info *cdi = &cd->devinfo;
@@ -129,20 +128,16 @@ int cdrom_eject(ide_drive_t *drive, int ejectflag,
        cmd[0] = GPCMD_START_STOP_UNIT;
        cmd[4] = loej | (ejectflag != 0);
 
-       return ide_cd_queue_pc(drive, cmd, 0, NULL, NULL, sense, 0, 0);
+       return ide_cd_queue_pc(drive, cmd, 0, NULL, NULL, NULL, 0, 0);
 }
 
 /* Lock the door if LOCKFLAG is nonzero; unlock it otherwise. */
 static
-int ide_cd_lockdoor(ide_drive_t *drive, int lockflag,
-                   struct request_sense *sense)
+int ide_cd_lockdoor(ide_drive_t *drive, int lockflag)
 {
-       struct request_sense my_sense;
+       struct request_sense my_sense, *sense = &my_sense;
        int stat;
 
-       if (sense == NULL)
-               sense = &my_sense;
-
        /* If the drive cannot lock the door, just pretend. */
        if ((drive->dev_flags & IDE_DFLAG_DOORLOCKING) == 0) {
                stat = 0;
@@ -186,23 +181,22 @@ int ide_cd_lockdoor(ide_drive_t *drive, int lockflag,
 int ide_cdrom_tray_move(struct cdrom_device_info *cdi, int position)
 {
        ide_drive_t *drive = cdi->handle;
-       struct request_sense sense;
 
        if (position) {
-               int stat = ide_cd_lockdoor(drive, 0, &sense);
+               int stat = ide_cd_lockdoor(drive, 0);
 
                if (stat)
                        return stat;
        }
 
-       return cdrom_eject(drive, !position, &sense);
+       return cdrom_eject(drive, !position);
 }
 
 int ide_cdrom_lock_door(struct cdrom_device_info *cdi, int lock)
 {
        ide_drive_t *drive = cdi->handle;
 
-       return ide_cd_lockdoor(drive, lock, NULL);
+       return ide_cd_lockdoor(drive, lock);
 }
 
 /*
@@ -213,7 +207,6 @@ int ide_cdrom_select_speed(struct cdrom_device_info *cdi, int speed)
 {
        ide_drive_t *drive = cdi->handle;
        struct cdrom_info *cd = drive->driver_data;
-       struct request_sense sense;
        u8 buf[ATAPI_CAPABILITIES_PAGE_SIZE];
        int stat;
        unsigned char cmd[BLK_MAX_CDB];
@@ -236,7 +229,7 @@ int ide_cdrom_select_speed(struct cdrom_device_info *cdi, int speed)
                cmd[5] = speed & 0xff;
        }
 
-       stat = ide_cd_queue_pc(drive, cmd, 0, NULL, NULL, &sense, 0, 0);
+       stat = ide_cd_queue_pc(drive, cmd, 0, NULL, NULL, NULL, 0, 0);
 
        if (!ide_cdrom_get_capabilities(drive, buf)) {
                ide_cdrom_update_speed(drive, buf);
@@ -252,11 +245,10 @@ int ide_cdrom_get_last_session(struct cdrom_device_info *cdi,
        struct atapi_toc *toc;
        ide_drive_t *drive = cdi->handle;
        struct cdrom_info *info = drive->driver_data;
-       struct request_sense sense;
        int ret;
 
        if ((drive->atapi_flags & IDE_AFLAG_TOC_VALID) == 0 || !info->toc) {
-               ret = ide_cd_read_toc(drive, &sense);
+               ret = ide_cd_read_toc(drive);
                if (ret)
                        return ret;
        }
@@ -300,7 +292,6 @@ int ide_cdrom_reset(struct cdrom_device_info *cdi)
 {
        ide_drive_t *drive = cdi->handle;
        struct cdrom_info *cd = drive->driver_data;
-       struct request_sense sense;
        struct request *rq;
        int ret;
 
@@ -315,7 +306,7 @@ int ide_cdrom_reset(struct cdrom_device_info *cdi)
         * lock it again.
         */
        if (drive->atapi_flags & IDE_AFLAG_DOOR_LOCKED)
-               (void)ide_cd_lockdoor(drive, 1, &sense);
+               (void)ide_cd_lockdoor(drive, 1);
 
        return ret;
 }
@@ -355,7 +346,6 @@ static int ide_cd_fake_play_trkind(ide_drive_t *drive, void *arg)
        struct atapi_toc_entry *first_toc, *last_toc;
        unsigned long lba_start, lba_end;
        int stat;
-       struct request_sense sense;
        unsigned char cmd[BLK_MAX_CDB];
 
        stat = ide_cd_get_toc_entry(drive, ti->cdti_trk0, &first_toc);
@@ -380,7 +370,7 @@ static int ide_cd_fake_play_trkind(ide_drive_t *drive, void *arg)
        lba_to_msf(lba_start,   &cmd[3], &cmd[4], &cmd[5]);
        lba_to_msf(lba_end - 1, &cmd[6], &cmd[7], &cmd[8]);
 
-       return ide_cd_queue_pc(drive, cmd, 0, NULL, NULL, &sense, 0, 0);
+       return ide_cd_queue_pc(drive, cmd, 0, NULL, NULL, NULL, 0, 0);
 }
 
 static int ide_cd_read_tochdr(ide_drive_t *drive, void *arg)
@@ -391,7 +381,7 @@ static int ide_cd_read_tochdr(ide_drive_t *drive, void *arg)
        int stat;
 
        /* Make sure our saved TOC is valid. */
-       stat = ide_cd_read_toc(drive, NULL);
+       stat = ide_cd_read_toc(drive);
        if (stat)
                return stat;