Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dma-direct: consolidate the error handling in dma_direct_alloc_pages

Use a goto label to merge two error return cases.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Robin Murphy <robin.murphy@arm.com>

+6 -7
+6 -7
kernel/dma/direct.c
··· 169 169 ret = dma_common_contiguous_remap(page, PAGE_ALIGN(size), 170 170 dma_pgprot(dev, PAGE_KERNEL, attrs), 171 171 __builtin_return_address(0)); 172 - if (!ret) { 173 - dma_free_contiguous(dev, page, size); 174 - return ret; 175 - } 176 - 172 + if (!ret) 173 + goto out_free_pages; 177 174 memset(ret, 0, size); 178 175 goto done; 179 176 } ··· 183 186 * so log an error and fail. 184 187 */ 185 188 dev_info(dev, "Rejecting highmem page from CMA.\n"); 186 - dma_free_contiguous(dev, page, size); 187 - return NULL; 189 + goto out_free_pages; 188 190 } 189 191 190 192 ret = page_address(page); ··· 203 207 else 204 208 *dma_handle = phys_to_dma(dev, page_to_phys(page)); 205 209 return ret; 210 + out_free_pages: 211 + dma_free_contiguous(dev, page, size); 212 + return NULL; 206 213 } 207 214 208 215 void dma_direct_free_pages(struct device *dev, size_t size, void *cpu_addr,