Commit e14ab303 authored by Thomas Zimmermann's avatar Thomas Zimmermann

drm/ast: Allocate instance of struct ast_i2c_chan with managed helpers

Replace kzalloc() with drmm_kzalloc() and thereby put the release of
the I2C instance into a separate action. Avoids explicit error roll-
back in ast_i2c_chan_create(). No functional changes.
Signed-off-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: default avatarSui Jingfeng <sui.jingfeng@linux.dev>
Reviewed-by: default avatarJocelyn Falempe <jfalempe@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240325200855.21150-5-tzimmermann@suse.de
parent c0af492c
...@@ -107,7 +107,6 @@ static void ast_i2c_release(struct drm_device *dev, void *res) ...@@ -107,7 +107,6 @@ static void ast_i2c_release(struct drm_device *dev, void *res)
struct ast_i2c_chan *i2c = res; struct ast_i2c_chan *i2c = res;
i2c_del_adapter(&i2c->adapter); i2c_del_adapter(&i2c->adapter);
kfree(i2c);
} }
struct ast_i2c_chan *ast_i2c_create(struct drm_device *dev) struct ast_i2c_chan *ast_i2c_create(struct drm_device *dev)
...@@ -115,7 +114,7 @@ struct ast_i2c_chan *ast_i2c_create(struct drm_device *dev) ...@@ -115,7 +114,7 @@ struct ast_i2c_chan *ast_i2c_create(struct drm_device *dev)
struct ast_i2c_chan *i2c; struct ast_i2c_chan *i2c;
int ret; int ret;
i2c = kzalloc(sizeof(struct ast_i2c_chan), GFP_KERNEL); i2c = drmm_kzalloc(dev->dev, sizeof(*i2c), GFP_KERNEL);
if (!i2c) if (!i2c)
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);
...@@ -137,7 +136,7 @@ struct ast_i2c_chan *ast_i2c_create(struct drm_device *dev) ...@@ -137,7 +136,7 @@ struct ast_i2c_chan *ast_i2c_create(struct drm_device *dev)
ret = i2c_bit_add_bus(&i2c->adapter); ret = i2c_bit_add_bus(&i2c->adapter);
if (ret) { if (ret) {
drm_err(dev, "Failed to register bit i2c\n"); drm_err(dev, "Failed to register bit i2c\n");
goto out_kfree; return ERR_PTR(ret);
} }
ret = drmm_add_action_or_reset(dev, ast_i2c_release, i2c); ret = drmm_add_action_or_reset(dev, ast_i2c_release, i2c);
...@@ -145,8 +144,4 @@ struct ast_i2c_chan *ast_i2c_create(struct drm_device *dev) ...@@ -145,8 +144,4 @@ struct ast_i2c_chan *ast_i2c_create(struct drm_device *dev)
return ERR_PTR(ret); return ERR_PTR(ret);
return i2c; return i2c;
out_kfree:
kfree(i2c);
return ERR_PTR(ret);
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment