]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
RDMA/rtrs: Call kobject_put in the failure path
authorGuoqing Jiang <guoqing.jiang@cloud.ionos.com>
Thu, 17 Dec 2020 14:19:03 +0000 (15:19 +0100)
committerJason Gunthorpe <jgg@nvidia.com>
Fri, 15 Jan 2021 19:25:09 +0000 (15:25 -0400)
Per the comment of kobject_init_and_add, we need to free the memory
by call kobject_put.

Fixes: 215378b838df ("RDMA/rtrs: client: sysfs interface functions")
Fixes: 91b11610af8d ("RDMA/rtrs: server: sysfs interface functions")
Link: https://lore.kernel.org/r/20201217141915.56989-8-jinpu.wang@cloud.ionos.com
Signed-off-by: Guoqing Jiang <guoqing.jiang@cloud.ionos.com>
Reviewed-by: Md Haris Iqbal <haris.iqbal@cloud.ionos.com>
Reviewed-by: Gioh Kim <gi-oh.kim@cloud.ionos.com>
Signed-off-by: Jack Wang <jinpu.wang@cloud.ionos.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/ulp/rtrs/rtrs-clt-sysfs.c
drivers/infiniband/ulp/rtrs/rtrs-srv-sysfs.c

index ba00f0de14caa6d308bf960238a4546a7d898fa2..ad77659800cd2cb8396757dfb99dba3ce3c73f9b 100644 (file)
@@ -408,6 +408,7 @@ int rtrs_clt_create_sess_files(struct rtrs_clt_sess *sess)
                                   "%s", str);
        if (err) {
                pr_err("kobject_init_and_add: %d\n", err);
+               kobject_put(&sess->kobj);
                return err;
        }
        err = sysfs_create_group(&sess->kobj, &rtrs_clt_sess_attr_group);
@@ -419,6 +420,7 @@ int rtrs_clt_create_sess_files(struct rtrs_clt_sess *sess)
                                   &sess->kobj, "stats");
        if (err) {
                pr_err("kobject_init_and_add: %d\n", err);
+               kobject_put(&sess->stats->kobj_stats);
                goto remove_group;
        }
 
index cca3a0acbabc50e7412e725af14d0d1e2b6e007b..0a3886629cae83e78d5cd7ee7971e05bde86456e 100644 (file)
@@ -236,6 +236,7 @@ static int rtrs_srv_create_stats_files(struct rtrs_srv_sess *sess)
                                   &sess->kobj, "stats");
        if (err) {
                rtrs_err(s, "kobject_init_and_add(): %d\n", err);
+               kobject_put(&sess->stats->kobj_stats);
                return err;
        }
        err = sysfs_create_group(&sess->stats->kobj_stats,
@@ -292,8 +293,8 @@ remove_group:
        sysfs_remove_group(&sess->kobj, &rtrs_srv_sess_attr_group);
 put_kobj:
        kobject_del(&sess->kobj);
-       kobject_put(&sess->kobj);
 destroy_root:
+       kobject_put(&sess->kobj);
        rtrs_srv_destroy_once_sysfs_root_folders(sess);
 
        return err;