Page MenuHomeFreeBSD

D43097.id131548.diff
No OneTemporary

D43097.id131548.diff

diff --git a/sys/dev/ocs_fc/ocs_ioctl.c b/sys/dev/ocs_fc/ocs_ioctl.c
--- a/sys/dev/ocs_fc/ocs_ioctl.c
+++ b/sys/dev/ocs_fc/ocs_ioctl.c
@@ -86,6 +86,7 @@
ocs_process_sli_config (ocs_t *ocs, ocs_ioctl_elxu_mbox_t *mcmd, ocs_dma_t *dma)
{
sli4_cmd_sli_config_t *sli_config = (sli4_cmd_sli_config_t *)mcmd->payload;
+ int error;
if (sli_config->emb) {
sli4_req_hdr_t *req = (sli4_req_hdr_t *)sli_config->payload.embed;
@@ -127,7 +128,13 @@
wrobj->host_buffer_descriptor[0].u.data.buffer_address_high = ocs_addr32_hi(dma->phys);
/* copy the data into the DMA buffer */
- copyin((void *)(uintptr_t)mcmd->in_addr, dma->virt, mcmd->in_bytes);
+ error = copyin((void *)(uintptr_t)mcmd->in_addr, dma->virt, mcmd->in_bytes);
+ if (error != 0) {
+ device_printf(ocs->dev, "%s: COMMON_WRITE_OBJECT - copyin failed: %d\n",
+ __func__, error);
+ ocs_dma_free(ocs, dma);
+ return error;
+ }
}
break;
case SLI4_OPC_COMMON_DELETE_OBJECT:
@@ -170,7 +177,13 @@
return ENXIO;
}
- copyin((void *)(uintptr_t)mcmd->in_addr, dma->virt, mcmd->in_bytes);
+ error = copyin((void *)(uintptr_t)mcmd->in_addr, dma->virt, mcmd->in_bytes);
+ if (error != 0) {
+ device_printf(ocs->dev, "%s: non-embedded - copyin failed: %d\n",
+ __func__, error);
+ ocs_dma_free(ocs, dma);
+ return error;
+ }
sli_config->payload.mem.address_low = ocs_addr32_lo(dma->phys);
sli_config->payload.mem.address_high = ocs_addr32_hi(dma->phys);

File Metadata

Mime Type
text/plain
Expires
Thu, Apr 16, 11:27 AM (15 h, 38 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31599330
Default Alt Text
D43097.id131548.diff (1 KB)

Event Timeline