Loading drivers/scsi/ibmvscsi/ibmvscsi.c +18 −12 Original line number Diff line number Diff line Loading @@ -739,6 +739,7 @@ static void send_mad_adapter_info(struct ibmvscsi_host_data *hostdata) { struct viosrp_adapter_info *req; struct srp_event_struct *evt_struct; dma_addr_t addr; evt_struct = get_event_struct(&hostdata->pool); if (!evt_struct) { Loading @@ -757,7 +758,7 @@ static void send_mad_adapter_info(struct ibmvscsi_host_data *hostdata) req->common.type = VIOSRP_ADAPTER_INFO_TYPE; req->common.length = sizeof(hostdata->madapter_info); req->buffer = dma_map_single(hostdata->dev, req->buffer = addr = dma_map_single(hostdata->dev, &hostdata->madapter_info, sizeof(hostdata->madapter_info), DMA_BIDIRECTIONAL); Loading @@ -770,8 +771,13 @@ static void send_mad_adapter_info(struct ibmvscsi_host_data *hostdata) return; } if (ibmvscsi_send_srp_event(evt_struct, hostdata)) if (ibmvscsi_send_srp_event(evt_struct, hostdata)) { printk(KERN_ERR "ibmvscsi: couldn't send ADAPTER_INFO_REQ!\n"); dma_unmap_single(hostdata->dev, addr, sizeof(hostdata->madapter_info), DMA_BIDIRECTIONAL); } }; /** Loading Loading @@ -1259,6 +1265,7 @@ static int ibmvscsi_do_host_config(struct ibmvscsi_host_data *hostdata, { struct viosrp_host_config *host_config; struct srp_event_struct *evt_struct; dma_addr_t addr; int rc; evt_struct = get_event_struct(&hostdata->pool); Loading @@ -1279,7 +1286,8 @@ static int ibmvscsi_do_host_config(struct ibmvscsi_host_data *hostdata, memset(host_config, 0x00, sizeof(*host_config)); host_config->common.type = VIOSRP_HOST_CONFIG_TYPE; host_config->common.length = length; host_config->buffer = dma_map_single(hostdata->dev, buffer, length, host_config->buffer = addr = dma_map_single(hostdata->dev, buffer, length, DMA_BIDIRECTIONAL); if (dma_mapping_error(host_config->buffer)) { Loading @@ -1291,11 +1299,9 @@ static int ibmvscsi_do_host_config(struct ibmvscsi_host_data *hostdata, init_completion(&evt_struct->comp); rc = ibmvscsi_send_srp_event(evt_struct, hostdata); if (rc == 0) { if (rc == 0) wait_for_completion(&evt_struct->comp); dma_unmap_single(hostdata->dev, host_config->buffer, length, DMA_BIDIRECTIONAL); } dma_unmap_single(hostdata->dev, addr, length, DMA_BIDIRECTIONAL); return rc; } Loading Loading
drivers/scsi/ibmvscsi/ibmvscsi.c +18 −12 Original line number Diff line number Diff line Loading @@ -739,6 +739,7 @@ static void send_mad_adapter_info(struct ibmvscsi_host_data *hostdata) { struct viosrp_adapter_info *req; struct srp_event_struct *evt_struct; dma_addr_t addr; evt_struct = get_event_struct(&hostdata->pool); if (!evt_struct) { Loading @@ -757,7 +758,7 @@ static void send_mad_adapter_info(struct ibmvscsi_host_data *hostdata) req->common.type = VIOSRP_ADAPTER_INFO_TYPE; req->common.length = sizeof(hostdata->madapter_info); req->buffer = dma_map_single(hostdata->dev, req->buffer = addr = dma_map_single(hostdata->dev, &hostdata->madapter_info, sizeof(hostdata->madapter_info), DMA_BIDIRECTIONAL); Loading @@ -770,8 +771,13 @@ static void send_mad_adapter_info(struct ibmvscsi_host_data *hostdata) return; } if (ibmvscsi_send_srp_event(evt_struct, hostdata)) if (ibmvscsi_send_srp_event(evt_struct, hostdata)) { printk(KERN_ERR "ibmvscsi: couldn't send ADAPTER_INFO_REQ!\n"); dma_unmap_single(hostdata->dev, addr, sizeof(hostdata->madapter_info), DMA_BIDIRECTIONAL); } }; /** Loading Loading @@ -1259,6 +1265,7 @@ static int ibmvscsi_do_host_config(struct ibmvscsi_host_data *hostdata, { struct viosrp_host_config *host_config; struct srp_event_struct *evt_struct; dma_addr_t addr; int rc; evt_struct = get_event_struct(&hostdata->pool); Loading @@ -1279,7 +1286,8 @@ static int ibmvscsi_do_host_config(struct ibmvscsi_host_data *hostdata, memset(host_config, 0x00, sizeof(*host_config)); host_config->common.type = VIOSRP_HOST_CONFIG_TYPE; host_config->common.length = length; host_config->buffer = dma_map_single(hostdata->dev, buffer, length, host_config->buffer = addr = dma_map_single(hostdata->dev, buffer, length, DMA_BIDIRECTIONAL); if (dma_mapping_error(host_config->buffer)) { Loading @@ -1291,11 +1299,9 @@ static int ibmvscsi_do_host_config(struct ibmvscsi_host_data *hostdata, init_completion(&evt_struct->comp); rc = ibmvscsi_send_srp_event(evt_struct, hostdata); if (rc == 0) { if (rc == 0) wait_for_completion(&evt_struct->comp); dma_unmap_single(hostdata->dev, host_config->buffer, length, DMA_BIDIRECTIONAL); } dma_unmap_single(hostdata->dev, addr, length, DMA_BIDIRECTIONAL); return rc; } Loading