From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933294AbeAYAT5 (ORCPT ); Wed, 24 Jan 2018 19:19:57 -0500 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:42686 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932250AbeAYATy (ORCPT ); Wed, 24 Jan 2018 19:19:54 -0500 From: Roman Gushchin To: CC: , , Roman Gushchin , Eric Dumazet , Johannes Weiner , Tejun Heo , "David S . Miller" Subject: [PATCH net] net: memcontrol: charge allocated memory after mem_cgroup_sk_alloc() Date: Thu, 25 Jan 2018 00:19:11 +0000 Message-ID: <20180125001911.15597-1-guro@fb.com> X-Mailer: git-send-email 2.14.3 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [2620:10d:c092:180::1:b41e] X-ClientProxiedBy: VI1PR0102CA0087.eurprd01.prod.exchangelabs.com (2603:10a6:803:15::28) To BL2PR15MB1076.namprd15.prod.outlook.com (2603:10b6:201:17::10) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3949bab9-1bbe-4aba-6e5f-08d563895346 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020);SRVR:BL2PR15MB1076; X-Microsoft-Exchange-Diagnostics: 1;BL2PR15MB1076;3:gaUwsb7Q1IWoWz2i0Ep2bunr3sHQEAsalxMnpUO6L8/ULUFE3lsR+dXqssgx8tYhXCc0gk11Pu+rsiok/U9U2ZceqU/NOldVsa2dCzWJSSRHQ+QF4EzISG14GXS2T0DikbFdFHO5mfof8LnPhTLmjO2qd40wBFgfTfubxycsJUbuPMwky7wvDcnHJLiT/iMqnwcTWhpVbKl+ZZEHtb9hQAANlRfvR0eM2925Cp/3TBWvf/CsXz1zqnupqOuGL6K4;25:1f+yzjf7weI6C77I6rZYEukP89nGs+0EYYvJLyuV2wPznBz+PMgxrGVa/6iCrD8EVbCHGU56osPdXgzFEOLsErruyFsbKcFrQD05fgI4qFecrXIrOg5EAMXBhAr5mj9ulbm/iLqdIOSOsT6w2tOHyJQkn5BNKLQrxLGy3F4pv9kFmxQX3+aTQMo/KKosSM4KY9hxJHHy+MhrA4vNm/OQqvfhvod6X/U04NGjiih0KreiQIGeuwMHtFEztW2/hIXA9EM1sklG7uf0oiDQpWbM1Jilna1LzTSKyQD8cBFE+0DLHNXKIy2eCoEgSbp4WENg+1afEa5zvJ10yEbq3f9a8g==;31:MEdClzoX+B14+robOj5mZF7V7U22k8qUbsSaK8sObS6k5gOgCsD8AfAIM+5LmCpgbGnOWfbjHK3vyLGlQcTwSoT5+p2hrP9rQz4xoYRpP66Ihd2nuDebQwRB9iwhNyECp1dx80JuEdMzeqvdllDtUsU6jN4Q6a2Qn3VKZlmeMFHtWXwCiN7lalbnWSjYpB1LwpPHanQvkD+XoPq/4JBMLlDg4CEJtN6Gi/vG1riR3Nw= X-MS-TrafficTypeDiagnostic: BL2PR15MB1076: X-Microsoft-Exchange-Diagnostics: 1;BL2PR15MB1076;20:xgRxU7BQnkAb72co8CRva/2l0dLsShdVodP+gRks11Ozo1gfYeNbjgJ0xzW3iuDJO9KPrl8bsF9/csnqJjJ/tbbqwxiQ05YVVkUGaMrmqpOZU1Lly0GlwQJyz4agSEXmek+iQ9Kry1PKzBUQkhyrutcMjpU/cIWdEIzJV9AWf7STk7TJWp7Oej3ts5X/GjiFKAtcfxHJAYAW1h+WrMo7b9f/f63ExrDInEMJxpkMoLC7s470+yRHfQ7EkBO9zvKPKKzoJLdYfxqsZrOi92Ax5keRUJ7oUvBoAmcZrZasX0db3usknQGIeo66wb5yxTyyFUqDwt6JEbC+jbvmfMGEky/jRuGOv4mwf4siFDJRpUwQ5NG8pBLp9LCY5rwmxnPcDjDcbm6Wd2Y4y5VD1gVaszdyhe+DvgqoSkNy+soSolWuR/SMLlDBYU5Fn5TtgfGR7Zw4j1PDiie/T101L57CYvLFKmYi8rAv17Q/Rhx6wt3113mLa/31tAnQebIwvOaE;4:eGSP3YpP2wyONfbZHbCC8i1EdjjLcdE43oRrXA0GBJYtDiy+nRARzfoexPePnVRxAJycTikJTBPiLZxP0yIlWNymRQT/HIS49Hrz3JZkyw6XisRxccf8F3eqadqT7Ts+BGNMwzTvzG8jfTF30HCyJ5hAqwqGJnoPpKnU7rDju9U0MuHUzs8FmDt8wVcpruQnxF+6LtnwgcIM84fuHRcmBi5v1qCyHsMSBpvkOVbfiThZz67DptsgCHVKjuX/B7FBG1m76+45gGEiSYyY4ApTTQTYSXxK39c56oirNofrXIfsFS0nkhnFYG6sRJEhcwCC/sJkb8nwCwpS2uKKO8d7RDOKjgmtgvf4gNtHXpU5nwelcBq2ozuFhHlAKIKaL6S0 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(67672495146484)(211936372134217)(153496737603132); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040501)(2401047)(5005006)(8121501046)(3231023)(11241501184)(2400081)(944501161)(3002001)(10201501046)(93006095)(93001095)(6041288)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(20161123558120)(20161123562045)(6072148)(201708071742011);SRVR:BL2PR15MB1076;BCL:0;PCL:0;RULEID:;SRVR:BL2PR15MB1076; X-Forefront-PRVS: 0563F2E8B7 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(39380400002)(39860400002)(346002)(376002)(366004)(396003)(189003)(199004)(2906002)(47776003)(6506007)(48376002)(59450400001)(386003)(1076002)(305945005)(7736002)(52396003)(105586002)(16586007)(186003)(50226002)(316002)(51416003)(8676002)(50466002)(8936002)(52116002)(81156014)(106356001)(5660300001)(36756003)(6486002)(81166006)(69596002)(86362001)(97736004)(25786009)(68736007)(2361001)(53416004)(6512007)(6916009)(6666003)(54906003)(4326008)(2351001)(6116002)(53936002)(478600001)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:BL2PR15MB1076;H:castle.thefacebook.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BL2PR15MB1076;23:BkjUgDQZbB32dePr3ECwC9lFmCFC6V5nkjlnnz+gh?= =?us-ascii?Q?9MOyFCzbDfIvNhwUIXzGt9NduWjfvOXlYgGDaRwrF1qRLlBVMINRLCSVORP1?= =?us-ascii?Q?P1z8j1UNShR9FCLA+dJJBhIBdLkwiEX4pOxNw9oBkYsNUi5yYzyPgdJntSBY?= =?us-ascii?Q?Bmjs9RjVlCXf/SA04+mw7lpkML0fkS7S4VgPKi1ARv7pMLCddSdTINnDOpFi?= =?us-ascii?Q?UR2VNXaCSjzzAxnA7sJqclFheodKcwQBBBTOL24XsgDBrwpVZZOEav1y9n/c?= =?us-ascii?Q?ZGla5TXwVzKA2Q9bFVfhNDIw6ai16F7Q9I+FS75yMDi02r5CxyhHaiax5U2V?= =?us-ascii?Q?08Rqhq7KRUpLaMF4JArJhU9ifpvCsM92s5/83nWjBYPtSrXlU1DUMMNl2P0P?= =?us-ascii?Q?8+EJzCgcWwfZH4NGxj2T5+nhq41o4qUgkRKOl3/mqYVzcZPRC7084546JgbK?= =?us-ascii?Q?6wnCFSrFsJqE1pInd3N3WUQgzuRHyxL14HkZA5oUNgE5Tk8BNqptEW06srTx?= =?us-ascii?Q?7jqaXvszLlnMo5rq1UZpSzc3o/ci9N30gXmrAxNq7VqTuz4C83BXlZISyKs5?= =?us-ascii?Q?e4Zy6jf+IEmSsMOqe+AHjH7uEEGBtqHpiPuWy+OF0wE2JAlD75Y2itSxWx8u?= =?us-ascii?Q?+MjHgsfNJBZMSD/tGewkkhLO8RdAp7er521EuR2jwvzBHFwgYTEVUTB6xzuf?= =?us-ascii?Q?abOXIXaGblBFPWBOOagam1GbqrLa7YRryslL+uc9LASU+OdjLquBehmA1r+v?= =?us-ascii?Q?yWyA/Q0DkVutEkLociwbayOX/M+Dp6yNMF4V4p1/ePzTP0JBLUbMS7BhSzoF?= =?us-ascii?Q?Sy8cdyY5KT1TKjdLyHURd60k7OIiG5mFayZvUtbHcaI+ubiArbQoEndF31Cn?= =?us-ascii?Q?p5EFAc2DwdBiapNjiBcXfbHqskxb8FvZv1Ssjlt/AA7fyF0PUXp0NcGX/taM?= =?us-ascii?Q?QcGdqUhFqkJjvX3dc3YsZt7pz8adpm+6rFlZ9Bph97WA7sp1N+6ObbN0uLLC?= =?us-ascii?Q?Vpr9Xffo0yt1rdtIci5atA6TYY9hXOEjOt+vWr9uH9joP90sPxjNRYW+si+s?= =?us-ascii?Q?LYrgrLRefSv4eZV5TDc8UzD3j+huesHeJxFGF2d3IYSdCe7N6PeuDvny3TBT?= =?us-ascii?Q?npUylUOOHPiX73Sep/PowI+n9K13b2gDR03pGq6nONN5YU6vRQUJg=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;BL2PR15MB1076;6:EBIOzGplQDVPbgiPpZ1338IJafuR21N3VlRYu+t3TOIA8UL42Sk9mKTaz5lrj5BbfTFNH0cpPq3Ja7UGtvanyBGeqjEMo84+AoWgriJ5THb1oZg0kYW914mFkjult/nvz73MjkighbClFIZWe6rOtDompStlLIyWk4pqdIoZW5j1sACTbjd1WMrfueX5vgKXHNNfZZMpUFxhRVybbP1b3Xb7gNKKcGfBWj1FxQV0HDCMf0d2em9JiJNaDSMOp2KOIoCI8YJKejnUZbpQdRER96Tmnw6J4VjLYQztw1+4XLMBclgRZvuoqmt7WwqXgV9qI3aLuN1KR2aFSOp9ODKQqfZqHsYgyFbEdHswjONHYZU=;5:Hk3FANWK/Vvpx6IadxYnNzBMFC1VBWz6bE/E7C/MsYjwe+7phTMP0OXpUQyMOvVmtQg55FL/GBQbRWViw1AqvEHDaRZOZVbvr9WAWj+JDaSU8mlhAwd3gIztLFa8M1LzSKilPu1HxdviJQESoxycgbUNbMQhS2uBaJcPDypfjnQ=;24:/JiB4d2tES48dFacZ2HiMui69mfF5LShzerRFGWvDaHPQFxmsWWOKvhFOpHrIdl3F2vAvuPwBZkMj7t3KzjHxNAGKjuJMZ2FzCjqSJn2NTY=;7:r6JWS7kwwaDn/Ze1l3ypOOxUEZPP8U+CUhFAputzgAN9gXXuogs5qnd44zqLVqJwKMw+jl3WCMlTevr8SzfeOb2Y73JMtittsLmTb96ncDCapX7rQ1oToEVaYB+/w7GIR+ZUxO3dwmpGVHkUDNb2BaEI7tnfRcC/VWWbG6GjnnZI9KKxXWqkAIAa6m7mth93oex8dkUf0Jmo72z9G8S6INOrCklrVCGUty3iudlnNbrCKSFHvceAfwcX1PK1EmAN SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BL2PR15MB1076;20:U0riSpwEfRDUyRWi7x6QdctWhjG/asWn+Fek23dRbsOxiH7knXF6+pRJjdovVhsT664cK69wu2N+BjhhSzzKpbbGsvkNQVEkFF5H9q8piWVFYrr5A0MNMy5lgDS6yao7fssXsuqw+346j3B2OXqb30t4oCbufpd16cDtFY2UQBo= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jan 2018 00:19:38.6274 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3949bab9-1bbe-4aba-6e5f-08d563895346 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL2PR15MB1076 X-OriginatorOrg: fb.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2018-01-24_09:,, signatures=0 X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org We've catched several cgroup css refcounting issues on 4.15-rc7, triggered from different release paths. We've used cgroups v2. I've added a temporarily per-memcg sockmem atomic counter, and found, that we're sometimes falling below 0. It was easy to reproduce, so I was able to bisect the problem. It was introduced by the commit 9f1c2674b328 ("net: memcontrol: defer call to mem_cgroup_sk_alloc()"), which moved the mem_cgroup_sk_alloc() call from the BH context into inet_csk_accept(). The problem is that all the memory allocated before mem_cgroup_sk_alloc() is charged to the socket, but not charged to the memcg. So, when we're releasing the socket, we're uncharging more, than we've charged. Fix this by charging the cgroup by the amount of already allocated memory right after mem_cgroup_sk_alloc() in inet_csk_accept(). Fixes: 9f1c2674b328 ("net: memcontrol: defer call to mem_cgroup_sk_alloc()") Signed-off-by: Roman Gushchin Cc: Eric Dumazet Cc: Johannes Weiner Cc: Tejun Heo Cc: David S. Miller --- net/ipv4/inet_connection_sock.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c index 4ca46dc08e63..f439162c2ea2 100644 --- a/net/ipv4/inet_connection_sock.c +++ b/net/ipv4/inet_connection_sock.c @@ -434,6 +434,7 @@ struct sock *inet_csk_accept(struct sock *sk, int flags, int *err, bool kern) struct request_sock *req; struct sock *newsk; int error; + long amt; lock_sock(sk); @@ -476,6 +477,10 @@ struct sock *inet_csk_accept(struct sock *sk, int flags, int *err, bool kern) spin_unlock_bh(&queue->fastopenq.lock); } mem_cgroup_sk_alloc(newsk); + amt = sk_memory_allocated(newsk); + if (amt && newsk->sk_memcg) + mem_cgroup_charge_skmem(newsk->sk_memcg, amt); + out: release_sock(sk); if (req) -- 2.14.3