Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755536AbcCCCtN (ORCPT ); Wed, 2 Mar 2016 21:49:13 -0500 Received: from mail-wm0-f54.google.com ([74.125.82.54]:36531 "EHLO mail-wm0-f54.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752672AbcCCCtK (ORCPT ); Wed, 2 Mar 2016 21:49:10 -0500 MIME-Version: 1.0 In-Reply-To: References: <1456859137-13646-1-git-send-email-pandit.parav@gmail.com> <1456859137-13646-2-git-send-email-pandit.parav@gmail.com> <20160302173949.GG29826@mtj.duckdns.org> Date: Thu, 3 Mar 2016 08:19:07 +0530 Message-ID: Subject: Re: [PATCHv9 1/3] rdmacg: Added rdma cgroup controller From: Parav Pandit To: Tejun Heo Cc: cgroups@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rdma@vger.kernel.org, lizefan@huawei.com, Johannes Weiner , Doug Ledford , Liran Liss , "Hefty, Sean" , Jason Gunthorpe , Haggai Eran , Jonathan Corbet , james.l.morris@oracle.com, serge@hallyn.com, Or Gerlitz , Matan Barak , raindel@mellanox.com, akpm@linux-foundation.org, linux-security-module@vger.kernel.org Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1113 Lines: 25 Hi Tejun, Haggai, On Thu, Mar 3, 2016 at 1:28 AM, Parav Pandit wrote: >>> + rpool->refcnt--; >>> + if (rpool->refcnt == 0 && rpool->num_max_cnt == pool_info->table_len) { >> >> If the caller charges 2 and then uncharges 1 two times, the refcnt >> underflows? Why not just track how many usages are zero? >> > This is certainly must fix bug. Changed refcnt to usage_sum and changed to do > usage_sum -= num during uncharging > and > usage_sum += num during charing. This is not sufficient as css_get() and put are done only once per call, which leads to similar problem as of refcnt. As I think more, I realised that this particular test is missing that resulted in this related bug, I realize that we don't have use case to have "num" field from the IB stack side. For bulk free IB stack will have to keep track of different or same rdmacg returned values to call uncharge() with right number of resources, all of that complexity just doesn't make sense and not required. So as first step to further simplify this, I am removing "num" input field from charge and uncharge API.