From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755672AbcIUH6g (ORCPT ); Wed, 21 Sep 2016 03:58:36 -0400 Received: from fallback7.mail.ru ([94.100.181.128]:46490 "EHLO fallback7.mail.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752813AbcIUH63 (ORCPT ); Wed, 21 Sep 2016 03:58:29 -0400 From: =?UTF-8?B?QWxleGFuZGVyIFNoaXlhbg==?= To: =?UTF-8?B?WWFuZ2JvIEx1?= Cc: =?UTF-8?B?TWFyayBSdXRsYW5k?= , =?UTF-8?B?WGlhb2JvIFhpZQ==?= , =?UTF-8?B?TWluZ2h1YW4gTGlhbg==?= , linux-i2c@vger.kernel.org, linux-clk@vger.kernel.org, =?UTF-8?B?UWlhbmcgWmhhbw==?= , =?UTF-8?B?UnVzc2VsbCBLaW5n?= , =?UTF-8?B?Qmh1cGVzaCBTaGFybWE=?= , =?UTF-8?B?Sm9lcmcgUm9lZGVs?= , =?UTF-8?B?Sm9jaGVuIEZyaWVkcmljaA==?= , =?UTF-8?B?Q2xhdWRpdSBNYW5vaWw=?= , devicetree@vger.kernel.org, =?UTF-8?B?S3VtYXIgR2FsYQ==?= , =?UTF-8?B?Um9iIEhlcnJpbmc=?= , =?UTF-8?B?U2FudG9zaCBTaGlsaW1rYXI=?= , linux-arm-kernel@lists.infradead.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, =?UTF-8?B?TGVvIExp?= , iommu@lists.linux-foundation.org, linuxppc-dev@lists.ozlabs.org, linux-mmc@vger.kernel.org, ulf.hansson@linaro.org, =?UTF-8?B?U2NvdHQgV29vZA==?= , =?UTF-8?B?QXJuZCBCZXJnbWFubg==?= Subject: =?UTF-8?B?UmU6IFt2MTIsIDcvOF0gYmFzZTogc29jOiBpbnRyb2R1Y2Ugc29jX2Rldmlj?= =?UTF-8?B?ZV9tYXRjaCgpIGludGVyZmFjZQ==?= MIME-Version: 1.0 X-Mailer: Mail.Ru Mailer 1.0 X-Originating-IP: [5.18.202.19] Date: Wed, 21 Sep 2016 10:56:14 +0300 Reply-To: =?UTF-8?B?QWxleGFuZGVyIFNoaXlhbg==?= X-Priority: 3 (Normal) Message-ID: <1474444574.270880035@f136.i.mail.ru> Content-Type: text/plain; charset=utf-8 Authentication-Results: f136.i.mail.ru; auth=pass smtp.auth=shc_work@mail.ru smtp.mailfrom=shc_work@mail.ru X-95568C8E: 26815A15162540332840C59422DF1D5F199E47233F92776887959EFD9D048BA7C7B69D01972835159BA536E4D1503A3B83FAB1837865CABA9C49F0EC2FE72FF498A436444B5622DF097E670C4EF37649DC486A557FBD259A02A25C8A631CD08384B4DC3511CB792F87959EFD9D048BA7738997BD70C1643787561DFE6C1D08D0CE37F99B8AE8A856ABD650A94198858487561DFE6C1D08D06E9615857AD7BE2F77ABBEF7FA25201687959EFD9D048BA7A6179E2BF3FAF700ED987E2E712D560CC2D72B3CA76BF4E8CA108BFDBA0B7F94D357EF6F2D635C31C7A554C910457B6D4DBF11D2937CEF47B3B8155FD4C5C837A0B436214C47F6174DC8CE9010676F6551435838FEB8A8215C32FFC12ADC61E21DA8942DB959741D18AAD7E917349E9DAB567ED3D1F201C6FE5AF75302EC26DD398E7CE324E2675D X-Mailru-Sender: CE311728A058A2210217F63EA6498A0310EB29D7A3425E0369D7F1F7E731D07D1ACCDE9B37116784 X-Mras: OK X-Spam: undefined In-Reply-To: <1474441040-11946-8-git-send-email-yangbo.lu@nxp.com> References: <1474441040-11946-1-git-send-email-yangbo.lu@nxp.com> <1474441040-11946-8-git-send-email-yangbo.lu@nxp.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by mail.home.local id u8L7wnJE005506 >Среда, 21 сентября 2016, 9:57 +03:00 от Yangbo Lu : > >From: Arnd Bergmann < arnd@arndb.de > > >We keep running into cases where device drivers want to know the exact >version of the a SoC they are currently running on. In the past, this has >usually been done through a vendor specific API that can be called by a >driver, or by directly accessing some kind of version register that is >not part of the device itself but that belongs to a global register area >of the chip. ... >+const struct soc_device_attribute *soc_device_match( >+const struct soc_device_attribute *matches) >+{ >+int ret = 0; >+ >+if (!matches) >+return NULL; >+ >+while (!ret) { >+if (!(matches->machine || matches->family || >+ matches->revision || matches->soc_id)) >+break; >+ret = bus_for_each_dev(&soc_bus_type, NULL, (void *)matches, >+ soc_device_match_one); >+if (!ret) >+matches++; So, what happen if next "matches" (after increment) will be NULL? I think you should use while(matches) at the start of this procedure. ---