From b60eac3d1a7b74e54ac8af9d533ff423c8ce9f8f Mon Sep 17 00:00:00 2001 From: luozhengzheng Date: Tue, 18 Oct 2016 03:03:52 +0800 Subject: [PATCH] Fix coverity defects: CID 150924 CID 150924: Unchecked return value (CHECKED_RETURN) - On taskq_dispatch failure the reference must be dropped and this entry can be safely skipped. This case should be impossible in the existing implementation but should be handled regardless. Reviewed-by: Brian Behlendorf Signed-off-by: luozhengzheng Closes #5278 --- module/zfs/arc.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/module/zfs/arc.c b/module/zfs/arc.c index 7bae2c42d2..0c5e66cbeb 100644 --- a/module/zfs/arc.c +++ b/module/zfs/arc.c @@ -3472,7 +3472,11 @@ arc_prune_async(int64_t adjust) refcount_add(&ap->p_refcnt, ap->p_pfunc); ap->p_adjust = adjust; - taskq_dispatch(arc_prune_taskq, arc_prune_task, ap, TQ_SLEEP); + if (taskq_dispatch(arc_prune_taskq, arc_prune_task, + ap, TQ_SLEEP) == 0) { + refcount_remove(&ap->p_refcnt, ap->p_pfunc); + continue; + } ARCSTAT_BUMP(arcstat_prune); } mutex_exit(&arc_prune_mtx);