The branch main has been updated by joerg:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=34ae0f7834d1bd6bb765d1c12e57e01e32b3e060

commit 34ae0f7834d1bd6bb765d1c12e57e01e32b3e060
Author:     Joerg Wunsch <[email protected]>
AuthorDate: 2026-07-26 20:54:01 +0000
Commit:     Joerg Wunsch <[email protected]>
CommitDate: 2026-07-26 21:25:53 +0000

    cam/cd: avoid integer divide fault in cdstart()
    
    If something goes very badly (e.g. forcibly removing a medium while
    the OS tries to start it), this could end up in params.blksize being 0
    (and params.disksize 1).  Avoid an integer divide fault, panicking the
    kernel, by bailing out before.
    
    MFC after:      3 days
---
 sys/cam/scsi/scsi_cd.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/sys/cam/scsi/scsi_cd.c b/sys/cam/scsi/scsi_cd.c
index e622a96ec77e..1e8dc98d53f4 100644
--- a/sys/cam/scsi/scsi_cd.c
+++ b/sys/cam/scsi/scsi_cd.c
@@ -918,6 +918,16 @@ cdstart(struct cam_periph *periph, union ccb *start_ccb)
                                return;
                        }
 
+                       if (softc->params.blksize == 0) {
+                               /*
+                                * Something went utterly wrong.
+                                * Avoid integer divide fault below.
+                                */
+                               biofinish(bp, NULL, ENXIO);
+                               xpt_release_ccb(start_ccb);
+                               return;
+                       }
+
                        scsi_read_write(&start_ccb->csio,
                                        /*retries*/ cd_retry_count,
                                        /* cbfcnp */ cddone,

Reply via email to