drm/i915/gem: Silence sparse for RCU protection inside the constructor
Inside the constructor, while cloning, we need to replace the dst->engines. Having forgotten that dst->engines is marked as RCU protected, we need to add the appropriate annotations to make sparse happy. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20191114225736.616885-5-chris@chris-wilson.co.uk
This commit is contained in:
parent
7936a22dd4
commit
d96bb620fc
|
@ -2009,7 +2009,8 @@ static int clone_engines(struct i915_gem_context *dst,
|
||||||
user_engines = i915_gem_context_user_engines(src);
|
user_engines = i915_gem_context_user_engines(src);
|
||||||
i915_gem_context_unlock_engines(src);
|
i915_gem_context_unlock_engines(src);
|
||||||
|
|
||||||
free_engines(dst->engines);
|
/* Serialised by constructor */
|
||||||
|
free_engines(__context_engines_static(dst));
|
||||||
RCU_INIT_POINTER(dst->engines, clone);
|
RCU_INIT_POINTER(dst->engines, clone);
|
||||||
if (user_engines)
|
if (user_engines)
|
||||||
i915_gem_context_set_user_engines(dst);
|
i915_gem_context_set_user_engines(dst);
|
||||||
|
@ -2044,7 +2045,8 @@ static int clone_sseu(struct i915_gem_context *dst,
|
||||||
unsigned long n;
|
unsigned long n;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
clone = dst->engines; /* no locking required; sole access */
|
/* no locking required; sole access under constructor*/
|
||||||
|
clone = __context_engines_static(dst);
|
||||||
if (e->num_engines != clone->num_engines) {
|
if (e->num_engines != clone->num_engines) {
|
||||||
err = -EINVAL;
|
err = -EINVAL;
|
||||||
goto unlock;
|
goto unlock;
|
||||||
|
|
Loading…
Reference in New Issue