* [bug report] scsi: myrs: Add Mylex RAID controller (SCSI interface)
@ 2018-02-13 14:37 Dan Carpenter
2018-02-14 2:22 ` Martin K. Petersen
0 siblings, 1 reply; 3+ messages in thread
From: Dan Carpenter @ 2018-02-13 14:37 UTC (permalink / raw)
To: hare; +Cc: linux-scsi
Hello Hannes Reinecke,
The patch 8a8606895947: "scsi: myrs: Add Mylex RAID controller (SCSI
interface)" from Jan 24, 2018, leads to the following static checker
warning:
drivers/scsi/myrs.c:479 myrs_get_event()
warn: right shifting more than type allows 16 vs 16
drivers/scsi/myrs.c
461 static unsigned char
462 myrs_get_event(myrs_hba *cs, unsigned short event_num,
^^^^^^^^^^^^^^^^^^^^^^^^
463 myrs_event *event_buf)
464 {
465 struct pci_dev *pdev = cs->pdev;
466 dma_addr_t event_addr;
467 myrs_cmdblk *cmd_blk = &cs->mcmd_blk;
468 myrs_cmd_mbox *mbox = &cmd_blk->mbox;
469 myrs_sgl *sgl;
470 unsigned char status;
471
472 event_addr = dma_map_single(&pdev->dev, event_buf,
473 sizeof(myrs_event), DMA_FROM_DEVICE);
474 if (dma_mapping_error(&pdev->dev, event_addr))
475 return DAC960_V2_AbnormalCompletion;
476
477 mbox->GetEvent.opcode = DAC960_V2_IOCTL;
478 mbox->GetEvent.dma_size = sizeof(myrs_event);
479 mbox->GetEvent.evnum_upper = event_num >> 16;
^^^^^^^^^^^^^^^
This is always going to be zero.
480 mbox->GetEvent.ctlr_num = 0;
481 mbox->GetEvent.ioctl_opcode = DAC960_V2_GetEvent;
482 mbox->GetEvent.evnum_lower = event_num & 0xFFFF;
483 sgl = &mbox->GetEvent.dma_addr;
484 sgl->sge[0].sge_addr = event_addr;
485 sgl->sge[0].sge_count = mbox->GetEvent.dma_size;
486 myrs_exec_cmd(cs, cmd_blk);
487 status = cmd_blk->status;
488 dma_unmap_single(&pdev->dev, event_addr,
489 sizeof(myrs_event), DMA_FROM_DEVICE);
490
491 return status;
492 }
This warning is probably a false positive which you can ignore but what
made me question it was looking at the caller:
drivers/scsi/myrs.c
2222 static void myrs_monitor(struct work_struct *work)
2223 {
2224 myrs_hba *cs = container_of(work, myrs_hba, monitor_work.work);
2225 struct Scsi_Host *shost = cs->host;
2226 myrs_ctlr_info *info = cs->ctlr_info;
2227 unsigned int epoch = cs->fwstat_buf->epoch;
2228 unsigned long interval = MYRS_PRIMARY_MONITOR_INTERVAL;
2229 unsigned char status;
2230
2231 dev_dbg(&shost->shost_gendev, "monitor tick\n");
2232
2233 status = myrs_get_fwstatus(cs);
2234
2235 if (cs->needs_update) {
2236 cs->needs_update = false;
2237 mutex_lock(&cs->cinfo_mutex);
2238 status = myrs_get_ctlr_info(cs);
2239 mutex_unlock(&cs->cinfo_mutex);
2240 }
2241 if (cs->fwstat_buf->next_evseq - cs->next_evseq > 0) {
2242 status = myrs_get_event(cs, cs->next_evseq,
^^^^^^^^^^^^^^
This is an int.
2243 cs->event_buf);
2244 if (status == DAC960_V2_NormalCompletion) {
2245 myrs_log_event(cs, cs->event_buf);
2246 cs->next_evseq++;
^^^^^^^^^^^^^^^^
And I guess this is where we set cs->next_evseq.
2247 interval = 1;
2248 }
2249 }
regards,
dan carpenter
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [bug report] scsi: myrs: Add Mylex RAID controller (SCSI interface)
2018-02-13 14:37 [bug report] scsi: myrs: Add Mylex RAID controller (SCSI interface) Dan Carpenter
@ 2018-02-14 2:22 ` Martin K. Petersen
0 siblings, 0 replies; 3+ messages in thread
From: Martin K. Petersen @ 2018-02-14 2:22 UTC (permalink / raw)
To: hare; +Cc: Dan Carpenter, linux-scsi
Hannes,
> The patch 8a8606895947: "scsi: myrs: Add Mylex RAID controller (SCSI
> interface)" from Jan 24, 2018, leads to the following static checker
> warning:
I dropped the two Mylex patches from 4.17/scsi-queue for now. Please fix
the issues reported and repost.
--
Martin K. Petersen Oracle Linux Engineering
^ permalink raw reply [flat|nested] 3+ messages in thread
* [bug report] scsi: myrs: Add Mylex RAID controller (SCSI interface)
@ 2023-08-04 9:16 Dan Carpenter
0 siblings, 0 replies; 3+ messages in thread
From: Dan Carpenter @ 2023-08-04 9:16 UTC (permalink / raw)
To: hare; +Cc: linux-scsi
Hello Hannes Reinecke,
The patch 77266186397c: "scsi: myrs: Add Mylex RAID controller (SCSI
interface)" from Oct 17, 2018 (linux-next), leads to the following
Smatch static checker warning:
drivers/scsi/myrs.c:1508 disable_enclosure_messages_store()
warn: no lower bound on 'value' rl='s32min-2'
drivers/scsi/myrs.c
1494 static ssize_t disable_enclosure_messages_store(struct device *dev,
1495 struct device_attribute *attr, const char *buf, size_t count)
1496 {
1497 struct scsi_device *sdev = to_scsi_device(dev);
1498 struct myrs_hba *cs = shost_priv(sdev->host);
1499 int value, ret;
^^^^^^^^^
1500
1501 ret = kstrtoint(buf, 0, &value);
1502 if (ret)
1503 return ret;
1504
1505 if (value > 2)
Smatch is complaining about negative values of value. Why is 2 allowed
when ->disable_enc_msg is a bool? We have a kstrtobool() function as
well, btw.
This is from an unpublished Smatch check but I'm working on it to get
it ready to release.
1506 return -EINVAL;
1507
--> 1508 cs->disable_enc_msg = value;
1509 return count;
1510 }
regards,
dan carpenter
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-08-04 9:20 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-02-13 14:37 [bug report] scsi: myrs: Add Mylex RAID controller (SCSI interface) Dan Carpenter
2018-02-14 2:22 ` Martin K. Petersen
-- strict thread matches above, loose matches on Subject: below --
2023-08-04 9:16 Dan Carpenter
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox