On Wed, Mar 24, 2021 at 10:43:49PM +0300, Dmitry Osipenko wrote:
> 24.03.2021 22:20, Minchan Kim пишет:
> >  static int __init cma_sysfs_init(void)
> >  {
> > -   int i = 0;
> > +   struct kobject *cma_kobj_root;
> > +   struct cma_kobject *cma_kobj;
> >     struct cma *cma;
> > +   unsigned int i;
> 
> >     while (--i >= 0) {
> 
> Do you realize that this doesn't work anymore?
> 
> >             cma = &cma_areas[i];
> > -           kobject_put(&cma->stat->kobj);
> > -   }
> >  
> > -   kfree(cma_stats);
> > -   kobject_put(cma_kobj);
> > +           kobject_put(&cma->cma_kobj->kobj);
> > +           kfree(cma->cma_kobj);
> 
> Freeing a null pointer?

Need coffee.
 
diff --git a/mm/cma_sysfs.c b/mm/cma_sysfs.c
index a670a80aad6f..73463be08df7 100644
--- a/mm/cma_sysfs.c
+++ b/mm/cma_sysfs.c
@@ -79,8 +79,7 @@ static int __init cma_sysfs_init(void)
        struct kobject *cma_kobj_root;
        struct cma_kobject *cma_kobj;
        struct cma *cma;
-       unsigned int i;
-       int err;
+       int i, err;

        cma_kobj_root = kobject_create_and_add("cma", mm_kobj);
        if (!cma_kobj_root)
@@ -108,10 +107,7 @@ static int __init cma_sysfs_init(void)
 out:
        while (--i >= 0) {
                cma = &cma_areas[i];
-
                kobject_put(&cma->cma_kobj->kobj);
-               kfree(cma->cma_kobj);
-               cma->cma_kobj = NULL;
        }
        kobject_put(cma_kobj_root);


Reply via email to