• R
    DMA-API: net: brocade/bna/bnad.c: fix 32-bit DMA mask handling · 3e548079
    Russell King 提交于
    The fallback to 32-bit DMA mask is rather odd:
    	if (!dma_set_mask(&pdev->dev, DMA_BIT_MASK(64)) &&
    	    !dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64))) {
    		*using_dac = true;
    	} else {
    		err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32));
    		if (err) {
    			err = dma_set_coherent_mask(&pdev->dev,
    						    DMA_BIT_MASK(32));
    			if (err)
    				goto release_regions;
    		}
    
    This means we only try and set the coherent DMA mask if we failed to
    set a 32-bit DMA mask, and only if both fail do we fail the driver.
    Adjust this so that if either setting fails, we fail the driver - and
    thereby end up properly setting both the DMA mask and the coherent
    DMA mask in the fallback case.
    Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
    3e548079
bnad.c 86.3 KB