Hi,

On 08/12/2015 03:33 PM, Johannes Thumshirn wrote:
> Hi Maurizio,
> 
> Sorry but it looks like you've forgotten one change in fnic_eth_send().

Ok, I converted fnic_eth_send() to use gotos for error cleanup and sent V3.

Hopefully it'll be the final version.
Thanks for the review.

Regards,
Maurizio Lombardi

> 
> Maurizio Lombardi <mlomb...@redhat.com> writes:
> 
>> the kernel prints some warnings when compiled with CONFIG_DMA_API_DEBUG.
>> This is because the fnic driver doesn't check the return value of
>> pci_map_single().
>>
>> [   11.942770] scsi host12: fnic
>>  }
> 
> [..]
>>  
>>  void fnic_free_rq_buf(struct vnic_rq *rq, struct vnic_rq_buf *buf)
>> @@ -981,6 +993,7 @@ void fnic_eth_send(struct fcoe_ctlr *fip, struct sk_buff 
>> *skb)
>>      struct ethhdr *eth_hdr;
>>      struct vlan_ethhdr *vlan_hdr;
>>      unsigned long flags;
>> +    int r;
>>  
>>      if (!fnic->vlan_hw_insert) {
>>              eth_hdr = (struct ethhdr *)skb_mac_header(skb);
>> @@ -1003,6 +1016,13 @@ void fnic_eth_send(struct fcoe_ctlr *fip, struct 
>> sk_buff *skb)
>>  
>>      pa = pci_map_single(fnic->pdev, skb->data, skb->len, PCI_DMA_TODEVICE);
>>  
>> +    r = pci_dma_mapping_error(fnic->pdev, pa);
>> +    if (r) {
>> +            printk(KERN_ERR "PCI mapping failed with error %d\n", r);
>> +            kfree_skb(skb);
>> +            return;
>> +    }
>> +
>>      spin_lock_irqsave(&fnic->wq_lock[0], flags);
>>      if (!vnic_wq_desc_avail(wq)) {
>>              pci_unmap_single(fnic->pdev, pa, skb->len, PCI_DMA_TODEVICE);
>> @@ -1071,6 +1091,12 @@ static int fnic_send_frame(struct fnic *fnic, struct 
>> fc_frame *fp)
>>  
>>      pa = pci_map_single(fnic->pdev, eth_hdr, tot_len, PCI_DMA_TODEVICE);
> [..]
> 
> Otherwise:
> 
> Reviewed-by: Johannes Thumshirn <jthumsh...@suse.de>
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to