From 58e178894bfc040834e1270c6fe9b9fdef513550 Mon Sep 17 00:00:00 2001 From: Martin Pitt Date: Thu, 15 Apr 2010 08:56:48 +0200 Subject: [PATCH] cdrom_id: Do not ignore errors from scsi_cmd_run() scsi_cmd_run() can return positive error messages if we have CHECK_CONDITION set and get the error code from the SCSI command result. So check the result for non-zero, not for being negative. This should fix another cause for "phantom" media in empty CD-ROM drives. Thanks to Mike Brudevold for spotting this! https://launchpad.net/bugs/562978 --- extras/cdrom_id/cdrom_id.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/extras/cdrom_id/cdrom_id.c b/extras/cdrom_id/cdrom_id.c index 16b126027..37212e979 100644 --- a/extras/cdrom_id/cdrom_id.c +++ b/extras/cdrom_id/cdrom_id.c @@ -245,7 +245,7 @@ static int cd_inquiry(struct udev *udev, int fd) { scsi_cmd_set(udev, &sc, 4, 36); scsi_cmd_set(udev, &sc, 5, 0); err = scsi_cmd_run(udev, &sc, fd, inq, 36); - if ((err < 0)) { + if ((err != 0)) { info_scsi_cmd_err(udev, "INQUIRY", err); return -1; } @@ -351,7 +351,7 @@ static int cd_profiles(struct udev *udev, int fd) scsi_cmd_set(udev, &sc, 8, sizeof(features) & 0xff); scsi_cmd_set(udev, &sc, 9, 0); err = scsi_cmd_run(udev, &sc, fd, features, sizeof(features)); - if ((err < 0)) { + if ((err != 0)) { info_scsi_cmd_err(udev, "GET CONFIGURATION", err); return -1; } @@ -492,7 +492,7 @@ static int cd_media_info(struct udev *udev, int fd) scsi_cmd_set(udev, &sc, 8, sizeof(header)); scsi_cmd_set(udev, &sc, 9, 0); err = scsi_cmd_run(udev, &sc, fd, header, sizeof(header)); - if ((err < 0)) { + if ((err != 0)) { info_scsi_cmd_err(udev, "READ DISC INFORMATION", err); return -1; }; @@ -526,7 +526,7 @@ static int cd_media_toc(struct udev *udev, int fd) scsi_cmd_set(udev, &sc, 8, sizeof(header)); scsi_cmd_set(udev, &sc, 9, 0); err = scsi_cmd_run(udev, &sc, fd, header, sizeof(header)); - if ((err < 0)) { + if ((err != 0)) { info_scsi_cmd_err(udev, "READ TOC", err); return -1; } @@ -549,7 +549,7 @@ static int cd_media_toc(struct udev *udev, int fd) scsi_cmd_set(udev, &sc, 8, len); scsi_cmd_set(udev, &sc, 9, 0); err = scsi_cmd_run(udev, &sc, fd, toc, len); - if ((err < 0)) { + if ((err != 0)) { info_scsi_cmd_err(udev, "READ TOC (tracks)", err); return -1; } @@ -576,7 +576,7 @@ static int cd_media_toc(struct udev *udev, int fd) scsi_cmd_set(udev, &sc, 8, 12); scsi_cmd_set(udev, &sc, 9, 0); err = scsi_cmd_run(udev, &sc, fd, header, sizeof(header)); - if ((err < 0)) { + if ((err != 0)) { info_scsi_cmd_err(udev, "READ TOC (multi session)", err); return -1; } -- 2.30.2