Pull up following revision(s) (requested by maya in ticket #1350): sys/external/bsd/drm2/dist/drm/ttm/ttm_tt.c: revision 1.8 Guarantee no zero-size uao/kmem allocations via ttm. It may be that all callers guarantee no zero-size ttm objects, but I can't prove that in five minutes of browsing callers. Rather than add a KASSERT, lacking proof, we'll add a warning message so that if it does happen then it happens noisily, but we'll also prevent the bad consequences of passing zero into uao_create by rounding up to a harmless nonzero allocation.diff -r1.6.2.1 -r1.6.2.2 src/sys/external/bsd/drm2/dist/drm/ttm/ttm_tt.c
(snj)
--- src/sys/external/bsd/drm2/dist/drm/ttm/ttm_tt.c 2016/12/12 09:13:42 1.6.2.1
+++ src/sys/external/bsd/drm2/dist/drm/ttm/ttm_tt.c 2017/01/29 05:24:16 1.6.2.2
@@ -203,6 +203,9 @@
ttm->dummy_read_page = dummy_read_page;
ttm->state = tt_unpopulated;
#ifdef __NetBSD__
+ WARN(size == 0, "zero-size allocation in %s, please file a NetBSD PR",
+ __func__); /* paranoia -- can't prove in five minutes */
+ size = MAX(size, 1);
ttm->swap_storage = uao_create(roundup2(size, PAGE_SIZE), 0);
uao_set_pgfl(ttm->swap_storage, bus_dmamem_pgfl(bdev->dmat));
#else
@@ -245,6 +248,9 @@
ttm->dummy_read_page = dummy_read_page;
ttm->state = tt_unpopulated;
#ifdef __NetBSD__
+ WARN(size == 0, "zero-size allocation in %s, please file a NetBSD PR",
+ __func__); /* paranoia -- can't prove in five minutes */
+ size = MAX(size, 1);
ttm->swap_storage = uao_create(roundup2(size, PAGE_SIZE), 0);
uao_set_pgfl(ttm->swap_storage, bus_dmamem_pgfl(bdev->dmat));
#else