mirror of
https://github.com/systemd/systemd.git
synced 2024-12-23 21:35:11 +03:00
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 <mike@brudevold.com> for spotting this! https://launchpad.net/bugs/562978
This commit is contained in:
parent
a60b077a46
commit
58e178894b
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user