Commit 86c947b3 authored by Matthew Brost's avatar Matthew Brost
Browse files

drm: Simplify drmm_alloc_ordered_workqueue return



Rather than returning ERR_PTR or NULL on failure, replace the NULL
return with ERR_PTR(-ENOMEM). This simplifies error handling at the
caller. While here, add kernel documentation for
drmm_alloc_ordered_workqueue.

Cc: Louis Chauvet <louis.chauvet@bootlin.com>
Signed-off-by: default avatarMatthew Brost <matthew.brost@intel.com>
Reviewed-by: default avatarLouis Chauvet <louis.chauvet@bootlin.com>
Link: https://lore.kernel.org/r/20250702232831.3271328-2-matthew.brost@intel.com
parent b4cd18f4
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -302,8 +302,6 @@ struct vkms_output *vkms_crtc_init(struct drm_device *dev, struct drm_plane *pri
	vkms_out->composer_workq = drmm_alloc_ordered_workqueue(dev, "vkms_composer", 0);
	if (IS_ERR(vkms_out->composer_workq))
		return ERR_CAST(vkms_out->composer_workq);
	if (!vkms_out->composer_workq)
		return ERR_PTR(-ENOMEM);

	return vkms_out;
}
+13 −2
Original line number Diff line number Diff line
@@ -129,14 +129,25 @@ void __drmm_mutex_release(struct drm_device *dev, void *res);

void __drmm_workqueue_release(struct drm_device *device, void *wq);

/**
 * drmm_alloc_ordered_workqueue - &drm_device managed alloc_ordered_workqueue()
 * @dev: DRM device
 * @fmt: printf format for the name of the workqueue
 * @flags: WQ_* flags (only WQ_FREEZABLE and WQ_MEM_RECLAIM are meaningful)
 * @args: args for @fmt
 *
 * This is a &drm_device-managed version of alloc_ordered_workqueue(). The
 * allocated workqueue is automatically destroyed on the final drm_dev_put().
 *
 * Returns: workqueue on success, negative ERR_PTR otherwise.
 */
#define drmm_alloc_ordered_workqueue(dev, fmt, flags, args...)					\
	({											\
		struct workqueue_struct *wq = alloc_ordered_workqueue(fmt, flags, ##args);	\
		wq ? ({										\
			int ret = drmm_add_action_or_reset(dev, __drmm_workqueue_release, wq);	\
			ret ? ERR_PTR(ret) : wq;						\
		}) :										\
			wq;									\
		}) : ERR_PTR(-ENOMEM);								\
	})

#endif