mirror of https://github.com/torvalds/linux.git
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: Matthew Brost <matthew.brost@intel.com> Reviewed-by: Louis Chauvet <louis.chauvet@bootlin.com> Link: https://lore.kernel.org/r/20250702232831.3271328-2-matthew.brost@intel.com
This commit is contained in:
parent
b4cd18f485
commit
86c947b363
|
|
@ -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);
|
vkms_out->composer_workq = drmm_alloc_ordered_workqueue(dev, "vkms_composer", 0);
|
||||||
if (IS_ERR(vkms_out->composer_workq))
|
if (IS_ERR(vkms_out->composer_workq))
|
||||||
return ERR_CAST(vkms_out->composer_workq);
|
return ERR_CAST(vkms_out->composer_workq);
|
||||||
if (!vkms_out->composer_workq)
|
|
||||||
return ERR_PTR(-ENOMEM);
|
|
||||||
|
|
||||||
return vkms_out;
|
return vkms_out;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -129,14 +129,25 @@ void __drmm_mutex_release(struct drm_device *dev, void *res);
|
||||||
|
|
||||||
void __drmm_workqueue_release(struct drm_device *device, void *wq);
|
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...) \
|
#define drmm_alloc_ordered_workqueue(dev, fmt, flags, args...) \
|
||||||
({ \
|
({ \
|
||||||
struct workqueue_struct *wq = alloc_ordered_workqueue(fmt, flags, ##args); \
|
struct workqueue_struct *wq = alloc_ordered_workqueue(fmt, flags, ##args); \
|
||||||
wq ? ({ \
|
wq ? ({ \
|
||||||
int ret = drmm_add_action_or_reset(dev, __drmm_workqueue_release, wq); \
|
int ret = drmm_add_action_or_reset(dev, __drmm_workqueue_release, wq); \
|
||||||
ret ? ERR_PTR(ret) : wq; \
|
ret ? ERR_PTR(ret) : wq; \
|
||||||
}) : \
|
}) : ERR_PTR(-ENOMEM); \
|
||||||
wq; \
|
|
||||||
})
|
})
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue