Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1176277AbdDYH6p convert rfc822-to-8bit (ORCPT ); Tue, 25 Apr 2017 03:58:45 -0400 Received: from szxga03-in.huawei.com ([45.249.212.189]:5455 "EHLO dggrg03-dlp.huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S980621AbdDYH6k (ORCPT ); Tue, 25 Apr 2017 03:58:40 -0400 From: "weiyongjun (A)" To: Vinod Koul , Wei Yongjun CC: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , "Pardha Saradhi K" , G Kranthi , Hardik T Shah , Jeeja KP , "alsa-devel@alsa-project.org" , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH -next] ASoC: Intel: Skylake: Fix to use list_for_each_safe() when delete items Thread-Topic: [PATCH -next] ASoC: Intel: Skylake: Fix to use list_for_each_safe() when delete items Thread-Index: AQHSvXQDEp7MJg8QVkaPwiit8BRlSqHU7/eAgADIBFA= Date: Tue, 25 Apr 2017 07:57:57 +0000 Message-ID: <6AADFAC011213A4C87B956458587ADB47BD834@SZXEMI508-MBX.china.huawei.com> References: <20170425032817.21959-1-weiyj.lk@gmail.com> <20170425040035.GY6263@localhost> In-Reply-To: <20170425040035.GY6263@localhost> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.177.30.138] Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: 8BIT MIME-Version: 1.0 X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020206.58FF0194.001C,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0, ip=169.254.9.187, so=2014-11-16 11:51:01, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: b290becbe984073c65b5be1d0188a572 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2709 Lines: 116 > -----Original Message----- > From: Vinod Koul [mailto:vinod.koul@intel.com] > Sent: Tuesday, April 25, 2017 12:01 PM > To: Wei Yongjun > Cc: Liam Girdwood ; Mark Brown > ; Jaroslav Kysela ; Takashi Iwai > ; Pardha Saradhi K > ; G Kranthi > ; Hardik T Shah > ; Jeeja KP ; weiyongjun (A) > ; alsa-devel@alsa-project.org; linux- > kernel@vger.kernel.org > Subject: Re: [PATCH -next] ASoC: Intel: Skylake: Fix to use > list_for_each_safe() when delete items > > On Tue, Apr 25, 2017 at 03:28:17AM +0000, Wei Yongjun wrote: > > From: Wei Yongjun > > > > Since we will remove items off the list using list_del() we need > > to use a safe version of the list_for_each() macro aptly named > > list_for_each_safe(). > > ah yes, god catch > > > This is detected by Coccinelle semantic patch. > > It is a good practice to include the script you used, do you mind adding > that in the log? > Sure. @@ iterator name list_for_each; expression E; expression pos, head; identifier l; @@ * list_for_each(pos, head) { ... * \(list_del\|list_del_init\|list_move\|list_move_tail\)(pos, ...); ... when != \(goto l; \| break; \| return E; \| return;\) } @@ expression E; expression pos, head, ep; identifier list; identifier l; @@ * list_for_each(pos, head) { ... * ep = list_entry(pos, ..., list); ... * \(list_del\|list_del_init\|list_move\|list_move_tail\)(&ep->list, ...); ... when != \(goto l; \| break; \| return E; \| return;\) } @@ iterator name list_for_each_prev; expression E; expression pos, head; identifier l; @@ * list_for_each_prev(pos, head) { ... * \(list_del\|list_del_init\)(pos); ... when != \(goto l; \| break; \| return E; \| return;\) } @@ iterator name list_for_each_entry; expression E; expression pos, head; identifier l, member; @@ * list_for_each_entry(pos, head, member) { ... * \(list_del\|list_del_init\)(&pos->member); ... when != \(goto l; \| break; \| return E; \| return;\) } @@ iterator name list_for_each_entry_from; expression E; expression pos, head; identifier l, member; @@ * list_for_each_entry_from(pos, head, member) { ... * \(list_del\|list_del_init\)(&pos->member); ... when != \(goto l; \| break; \| return E; \| return;\) } @@ iterator name list_for_each_entry_reverse; expression E; expression pos, head; identifier l, member; @@ * list_for_each_entry_reverse(pos, head, member) { ... * \(list_del\|list_del_init\)(&pos->member); ... when != \(goto l; \| break; \| return E; \| return;\) }