On Fri, 18 Dec 2015 19:24:05 +0300 Vladimir Davydov <vdavy...@virtuozzo.com> 
wrote:

> 
> OK, got it, thanks. Here goes the incremental patch (it should also fix
> the warning regarding unused cmpxchg returned value):
> ---
> diff --git a/mm/memcontrol.c b/mm/memcontrol.c
> index fc25dc211eaf..908c075e04eb 100644
> --- a/mm/memcontrol.c
> +++ b/mm/memcontrol.c
> @@ -864,7 +864,7 @@ struct mem_cgroup *mem_cgroup_iter(struct mem_cgroup 
> *root,
>                        * might block it. So we clear iter->position right
>                        * away.
>                        */
> -                     cmpxchg(&iter->position, pos, NULL);
> +                     (void)cmpxchg(&iter->position, pos, NULL);

No, this doesn't actually squish the __must_check warning.


Can anyone think of anything smarter than this?

--- 
a/mm/memcontrol.c~mm-memcontrol-fix-possible-memcg-leak-due-to-interrupted-reclaim-fix-fix
+++ a/mm/memcontrol.c
@@ -851,6 +851,9 @@ static struct mem_cgroup *get_mem_cgroup
        return memcg;
 }
 
+/* Move this to compiler.h if it proves worthy */
+#define defeat_must_check(expr) do { if (expr) ; } while (0)
+
 /**
  * mem_cgroup_iter - iterate over memory cgroup hierarchy
  * @root: hierarchy root
@@ -915,7 +918,7 @@ struct mem_cgroup *mem_cgroup_iter(struc
                         * might block it. So we clear iter->position right
                         * away.
                         */
-                       (void)cmpxchg(&iter->position, pos, NULL);
+                       defeat_must_check(cmpxchg(&iter->position, pos, NULL));
                }
        }
 
@@ -967,7 +970,7 @@ struct mem_cgroup *mem_cgroup_iter(struc
                 * thread, so check that the value hasn't changed since we read
                 * it to avoid reclaiming from the same cgroup twice.
                 */
-               (void)cmpxchg(&iter->position, pos, memcg);
+               defeat_must_check(cmpxchg(&iter->position, pos, memcg));
 
                /*
                 * pairs with css_tryget when dereferencing iter->position
_

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to