Module Name: src Committed By: riastradh Date: Sun Dec 19 12:10:21 UTC 2021
Modified Files: src/sys/external/bsd/drm2/dist/drm/i915/gem: i915_gem_phys.c Log Message: i915: Fix error branches in i915_gem_object_get_pages_phys. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 \ src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_phys.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_phys.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_phys.c:1.5 src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_phys.c:1.6 --- src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_phys.c:1.5 Sun Dec 19 11:33:49 2021 +++ src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_phys.c Sun Dec 19 12:10:20 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gem_phys.c,v 1.5 2021/12/19 11:33:49 riastradh Exp $ */ +/* $NetBSD: i915_gem_phys.c,v 1.6 2021/12/19 12:10:20 riastradh Exp $ */ /* * SPDX-License-Identifier: MIT @@ -7,7 +7,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: i915_gem_phys.c,v 1.5 2021/12/19 11:33:49 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gem_phys.c,v 1.6 2021/12/19 12:10:20 riastradh Exp $"); #include <linux/highmem.h> #include <linux/shmem_fs.h> @@ -92,12 +92,12 @@ static int i915_gem_object_get_pages_phy roundup_pow_of_two(obj->base.size), 0, BUS_DMA_WAITOK, &sg->sg_dmamap); if (ret) - goto err_st; + goto err_st1; /* XXX errno NetBSD->Linux */ ret = -bus_dmamap_load_raw(dmat, sg->sg_dmamap, &obj->mm.u.phys.seg, 1, roundup_pow_of_two(obj->base.size), BUS_DMA_WAITOK); if (ret) - goto err_st; + goto err_st1; loaded = true; #else sg->offset = 0; @@ -136,17 +136,18 @@ static int i915_gem_object_get_pages_phy return 0; -err_st: #ifdef __NetBSD__ +err_st1: if (loaded) bus_dmamap_unload(dmat, st->sgl->sg_dmamap); if (st->sgl->sg_dmamap) { bus_dmamap_destroy(dmat, st->sgl->sg_dmamap); st->sgl->sg_dmamap = NULL; } + sg_free_table(st); #endif +err_st: kfree(st); - sg_free_table(st); err_pci: #ifdef __NetBSD__ if (vaddr) {