From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752710AbcGAOcT (ORCPT ); Fri, 1 Jul 2016 10:32:19 -0400 Received: from mail-he1eur01on0139.outbound.protection.outlook.com ([104.47.0.139]:55338 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752535AbcGAOcR (ORCPT ); Fri, 1 Jul 2016 10:32:17 -0400 X-Greylist: delayed 22877 seconds by postgrey-1.27 at vger.kernel.org; Fri, 01 Jul 2016 10:32:17 EDT Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=aryabinin@virtuozzo.com; Subject: Re: [PATCH v3] kasan/quarantine: fix bugs on qlist_move_cache() To: , Andrew Morton References: <1467381733-18314-1-git-send-email-iamjoonsoo.kim@lge.com> CC: Alexander Potapenko , Dmitry Vyukov , , , , Joonsoo Kim From: Andrey Ryabinin Message-ID: <57767B66.7070904@virtuozzo.com> Date: Fri, 1 Jul 2016 17:17:10 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.8.0 MIME-Version: 1.0 In-Reply-To: <1467381733-18314-1-git-send-email-iamjoonsoo.kim@lge.com> Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: AM3PR07CA0040.eurprd07.prod.outlook.com (10.141.45.168) To DB6PR0801MB1302.eurprd08.prod.outlook.com (10.168.11.20) X-MS-Office365-Filtering-Correlation-Id: 85dfddc3-c1c5-4759-aaef-08d3a1ba41cb X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1302;2:iouLIuEFYiuLyV54mhCTYMn1+/OIgzzsIqsyTP8GHd2E9+1S9ulh4Cjoi+CJ2GBJnMJb7caupdCwnmCCa5gUfeHGqiKBlTBQjRhi8iJLGqROUjjhKkoCJ0t6rCAWqtDtWFQ1z1bOAuD2OernxvZkZRhWJzo9/7vd+Y/4EwLCoNyzT8CY3OkruSV4VfdphaaE;3:h5kNOLLj5qr5dIuF1UzzfDkjgP3ABBvJogxbPOJmmn/+6MD4OmmS/sMQwHqOoeT1g07Y7ZC/PO+egAEjdXwJC8ET9jBCgsFy/VChzRz6IhZ4Fc5By9o0tMOAIF7x3YMQ X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DB6PR0801MB1302; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1302;25:bz0NmOj3BB8sgmG5a4QQGFl2Z34Ak87ETMs1MclOzCmaQ4mQ8LJW2HnDjQHQPZ/Qg+gUzx9Qp+pa1y1DZbTv0m6eQZlfrP7zT7HIiTDEUqKoIbqZKZMemkM+M6knVvtK/URd1J4cfEfRreLw184IZeYDqpppW+U1PtS2aSioQPhFteZ1kFVi5/MnIAK/R+Hg7JYYHCZrAD9XzRYPGQt5rHYXlDHEOL+aFKcklCOWugKn/gB0wLPv//p2iAMo/k6uHbuKlAcqzyEdm63fIkvQnNYPim3U+6wugBaT0KOf3xe/M8gAKlPkho6qu3pgw2vTIuT92Os9R7ac2VdS2NDbkUuGBfQLkIVwCqL5b3qeMdygqkG3tFz0kVYj7rdu5NkIrtpvOjhOOGbF8/ezCHevTctg2KBZC35huyAPEEPJTsVCsSvIs5ubRCMWUhOvbEHGf1aWer/91UhIwbsM1lLzC+XprlZ5+XMJ6YbsqkrfUhwfVZa0xC8sfWposoJ0QvsWa0aRY0KO1HBDHViMOQRdhE+8P7kHVMt0v30tQc9xAVpWupJEcca+EkJcdjonXiz+exjeQSL0sCr12tx2IrBqLTgndG2O747MW7fU36eTipWdByEu5p9hcJOjYQao03AIwUF+KPa2VCRdJMwaqUwOEdRWAuM/AuL4yYWjqamojImNaAEpon1lTg1TdtlBL8PQEGCzlJS2GY4dKh9In9ezDinkWirmXW7AnnYoLe3ablo=;31:7M47jiRhEMhV0miruKV5mlxw4ANv+Ju/f7VOH2oRKr4MTFI3s65D1oWFPcnEDearuv92GV0ysJzgJ1rwvsXL8dt5O3QRrW0wx4i71yPQgdXOYx1qnc6RPyML/1+5hxUmqhap4qliGFIONZ2aX2QJtPrjLGYvbRpSAbhyhMCoAalclHMeVbu3Ho/dBx0PFoSpefQlTrwTXHK0/Rgj03iQ+w== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040130)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6041072)(6043046);SRVR:DB6PR0801MB1302;BCL:0;PCL:0;RULEID:;SRVR:DB6PR0801MB1302; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1302;4:dYgsS8wPHX5DREbHTdcfR09lQMrHp+m0iKRkFSQJAxx9WHCv7tG9M2PwvU4DEN8BhTDw1CFYfZ+pxhJEwvVrvh4JBWuFLDOolxXVXqQqbenucJVu3if6ezuifUfEr+gr1by9jKPCq8Xc0qcZmK7RAkVhTEayIc92typY3oHq2dRbvHHrlPa9P76HbW1YbRk6BR5COfUGjonyWV2/wcf7X/eUaoNcwDVt2wLHXZPeg/en9Fq+9p3G3Bef7/FWmDYIXGSilQS6N475lK6+OnuHr0e+pPLLfWst0MCJJ0oXVItxdrSTWFQFVBxpU5FTM8d0CFzk++A6nO+Y5vCku+JfKxRcc/I4FwKoaG3TSyLB+F3Z92twPM4Ng7lZUsuJcyx5UV/rak+o6XzXhe8WYOiHiQMzFNXV3/OP8ePoLOWhrew= X-Forefront-PRVS: 0990C54589 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6049001)(6009001)(7916002)(24454002)(377454003)(189002)(199003)(305945005)(101416001)(7736002)(36756003)(83506001)(7846002)(586003)(65956001)(42186005)(65806001)(47776003)(23746002)(66066001)(59896002)(99136001)(81156014)(4326007)(2906002)(77096005)(81166006)(8676002)(5890100001)(92566002)(80316001)(19580405001)(6116002)(3846002)(2950100001)(68736007)(19580395003)(5001770100001)(97736004)(105586002)(86362001)(65816999)(50986999)(64126003)(189998001)(230700001)(76176999)(87266999)(50466002)(33656002)(54356999)(106356001)(4001350100001);DIR:OUT;SFP:1102;SCL:1;SRVR:DB6PR0801MB1302;H:[10.30.19.223];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;DB6PR0801MB1302;23:+2vLjC0CEOIjIKb3CQ5k7DTh1ZOrngCITf2?= =?Windows-1252?Q?k37qlQRQA8qZgunyzBKp1nn8lkY3vr6w5UNY+FcE0zjXp7iPf33PZCe5?= =?Windows-1252?Q?RHAPLeyYH76QptcNR7CMKFGFEXntZ6x9cN+/rWrWJt9CcRDRm5Fc2dcP?= =?Windows-1252?Q?PMSpTZOy3e4AZXKQrj1z+VDympWabGWLLFuvo6lHzzpu+boBp3ZI0ce4?= =?Windows-1252?Q?oXRPKH85Xg27+pY+aTTNLur4gqixwf2atIz8yB5QT/rF3uei0Z5nM+L+?= =?Windows-1252?Q?xPxchBo0+rGy/TF6jYzqwPNseinVJnMQ8NSR90Pa/cJqMOXr1SCZhT0Q?= =?Windows-1252?Q?fl87IJnPSW/6lgHAjvrplSIFa/BEw6DhldXzCV2P0D7LeV5+M1ULkJC+?= =?Windows-1252?Q?NvOYS6TSei864cmR5nM9npJRuq1GpyjeXkhSQx5wLd9T1sdSqBr0btEk?= =?Windows-1252?Q?oIUVg8fZ9DdhQ161hFMrOwxW2jcfcpsX52Ccmx0dJo+NQBmB6mcZ/nUw?= =?Windows-1252?Q?oBEs0DcCXovWad3usIUwB81G9wlx+GTcBcIg4Gpezdu7BCyuEN7dUVO+?= =?Windows-1252?Q?ojVYJZX1r4bEslPn+hNnCNQiRXvxQf+T5NXI+jRLqhBk4BTLBqGesrT+?= =?Windows-1252?Q?brIg34FYtw1Iu40ZezGbYCN1Wxmj4xI4FY0IXRuk4GQLFz4I//MJ45Lx?= =?Windows-1252?Q?iGOi50BGw36zEhbm0P/vLeox7QjetI6dTAPyvCc6tB1kBJaJTjkzFUP3?= =?Windows-1252?Q?cbnMx+xTfzE9FH32u8cG40zFlxoti9GjvzPyF0zj8IPkH4EY7j5gMSSs?= =?Windows-1252?Q?bYMgksOsVUeiUfTTg1aMiy1CtaDhRxJAlpNlRRCEjysaFQrVnnYHNyeR?= =?Windows-1252?Q?zKbzDB/FQWW8heOa/bdER08CuMf1UksES5btiy0IxXg65DCMsUShQ74S?= =?Windows-1252?Q?yTNEhyhQQBOmgVdHCCy/KVcXRCbnmcSyphD2ILXO7VHkOCwht5Dbis3b?= =?Windows-1252?Q?BIPeyMxUOVm3xoVkxntLfy7mmnlQrdE++4gZ8ylx8zoRHRSQba57I5dl?= =?Windows-1252?Q?kpkfh8V6dMK5uIDjrGkKpwCiJeALIgF/PTp7XrXKkfNrysttRw/2oIQC?= =?Windows-1252?Q?ba/R4X3OidWz/mA8GMi66EwmkbHhwlktWnxYZY8dCa+DYw6oAfoirUMB?= =?Windows-1252?Q?TA8aHKI2QB941hNddoPfItTBv4NBxd//71hS3yyLsElwrS6lj6gI6y+l?= =?Windows-1252?Q?VMgVdn1ev5s8FJ3IUR4vjbnLgprf7g3LoQ7CGrt9c8/JpkZdd0yw5M+F?= =?Windows-1252?Q?l6f4l4L52/gXtTdQMX/ne6IQmXTtj34y/Ds252Tqo31w7K3wCW0Bqw+f?= =?Windows-1252?Q?9NB8tX5+j1NdJym7RJYu3t2BAO/mjumJbBM/ifn48pE/R5Z3A6q6fU8x?= =?Windows-1252?Q?zRnOe9uxis6xvRUh8QDrLI8d424rtcA9e/+BOMvBE4Q=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1302;6:3sXeQMuXHql4CjTv5IO9Klb6nebXi+RhaKNDBCinJ44npYpzvsrcB5gL4/B3KK6C8AKbUObDoX3SvhPITW1ESp6mNUtcGae1NUZ+IGuPZFk7SrMTVr6FBreU8+DkuPLEGlO5QHIm++GuvBauop05fnsUVtkuxymRceKjXDHz4RN7hnwVw9+W60ssrJ19Ctu7jpytSMQRC8uLLOC5qRY78RMM0UIoPL/4AKU9pbc87Hqxf3OA+IhhVvAuZAOqjoUqb3l3CB7Zoi/4IOZAOGB3hik5SLUA4chhzBMVd/K0RkpLssiTM1lebSGYrtq3fPlY;5:BtY3qmujvZ+g/nPAhY25B1ttpMj+h9iqYYLt0A70otPRxiZm1il75fzRN89cifGHujD+h/KKTk6667/LRekmqCOgMz9XsEMHwZSLQ3KT8CgkENBe4grgEBEmnLc+bCSQ5LSd/nw5HPRlTiE7e1+VHQ==;24:LfOSXdhiGHTCfaVXZjTVZ4Ww9Y83Q8OaeQxEq6Hh8FHPLnnXkffAjOmLgkCwi6bRnfbVgI22rXgUUoWpwH9HfBDdzgWO4Zw17IR7LAn1Zhw=;7:hef7zeUIqlIistU5xY19lC4xOBb7PimZe+AMrdxxfKyMDTDRCul1CmTMqBf5y4RmzfEYi1eqY19zGXUJ6V47BH439NwsQOFO5JZHJ7ZSctnMLOqDuoOaXHNro3FyhGFX1/mN+qOPGGwPYFsBeSMmpRS0+bEA2fvJRTURCOkG9PbvjWfZYbvzz6/iVnKsLf1kfO06CIVMqJV4PTtsV9W+R42YwLv6+ORbjclU6b8q6eWgKcaeItHcZb6k1RLyDIap SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1302;20:1ljZf8BChxwNWeKlCUyXss9SAQOhN7U5eqL4kLuaFf1bWrFDOh04UMjWPF41fIIyWY3voAhu6tkVbI5rDFiIJq0U89dpJvQEEd0989+Ga38VogXPR6+rrQec7095w5GyZg5YlDH/p/Zh4ynSj2tQOGi8md4Yr0eEdpHI4qTSH4k= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jul 2016 14:16:11.7307 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0801MB1302 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 07/01/2016 05:02 PM, js1304@gmail.com wrote: > From: Joonsoo Kim > > There are two bugs on qlist_move_cache(). One is that qlist's tail > isn't set properly. curr->next can be NULL since it is singly linked > list and NULL value on tail is invalid if there is one item on qlist. > Another one is that if cache is matched, qlist_put() is called and > it will set curr->next to NULL. It would cause to stop the loop > prematurely. > > These problems come from complicated implementation so I'd like to > re-implement it completely. Implementation in this patch is really > simple. Iterate all qlist_nodes and put them to appropriate list. > > Unfortunately, I got this bug sometime ago and lose oops message. > But, the bug looks trivial and no need to attach oops. > > v3: fix build warning > > Signed-off-by: Joonsoo Kim > --- > mm/kasan/quarantine.c | 21 +++++++-------------- > 1 file changed, 7 insertions(+), 14 deletions(-) > > diff --git a/mm/kasan/quarantine.c b/mm/kasan/quarantine.c > index 4973505..cf92494 100644 > --- a/mm/kasan/quarantine.c > +++ b/mm/kasan/quarantine.c > @@ -238,30 +238,23 @@ static void qlist_move_cache(struct qlist_head *from, > struct qlist_head *to, > struct kmem_cache *cache) > { > - struct qlist_node *prev = NULL, *curr; > + struct qlist_node *curr; > > if (unlikely(qlist_empty(from))) > return; > > curr = from->head; > + qlist_init(from); > while (curr) { > struct qlist_node *qlink = curr; Can you please also get rid of either qlink or curr. Those are essentially the same pointers. > struct kmem_cache *obj_cache = qlink_to_cache(qlink); > > - if (obj_cache == cache) { > - if (unlikely(from->head == qlink)) { > - from->head = curr->next; > - prev = curr; > - } else > - prev->next = curr->next; > - if (unlikely(from->tail == qlink)) > - from->tail = curr->next; > - from->bytes -= cache->size; > - qlist_put(to, qlink, cache->size); > - } else { > - prev = curr; > - } > curr = curr->next; > + > + if (obj_cache == cache) > + qlist_put(to, qlink, cache->size); > + else > + qlist_put(from, qlink, cache->size); > } > } > >