From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 4DE21C43334 for ; Tue, 14 Jun 2022 08:21:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-ID:In-Reply-To: References:Message-ID:Date:Subject:To:From:Reply-To:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=6NKWTbYLKma2i6rFjQW26Xmr3/enLDPbevyYygxzTsg=; b=4zI8YilwaVWpkX CeZ8xM9PNmp8L+XySPHAChpveCtNgUzMD33BmcrvLzjQExD6Q7XHVfbttU1M1akp41iH3zBO0bY0V be+DGiBgUOK4016ThNXM31x6bXV2ffuOgRErrb8pR//79DY8xfEevYzciJoei8Z4orSYg3CdStXvf VGWLcFxj62IHC/ettAL20/9dpN9wg+KQjOBWAzWG9fX4+OK+Oy2YecTwyfipLxaS5y8wng9y9oEeQ maLq8S+dagGfmR1MJk4O/lv5mgjVG3znxAKrBg9rZRZW6p6QmLTgJGaY0WI3OIOl9vP9vgzjiTE9a Tgcu/Izuma87k41wKAiw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1o11m8-008DDR-OE; Tue, 14 Jun 2022 08:19:48 +0000 Received: from esa.microchip.iphmx.com ([68.232.153.233]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1o11m4-008DCE-UW for linux-arm-kernel@lists.infradead.org; Tue, 14 Jun 2022 08:19:47 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1655194784; x=1686730784; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=EmMvnuTjy5FOfEsTrAQLjeKDRSqzcx2Mtrq+qgCLs0A=; b=Y+/+tYVpJ/SQoBtXY3W7L+Di2NxU7JQKnemmRF4hzFUeTtXr1/PpKcaZ Rw4i28Aq6Gt/K2DxbtdYJRmSRfPk6OgHalNKzGUvoO0Wz4EO2AgjVZhrs jlKVe/2IOVLc06P0ZDBbEG3yhhYagb4+1QUcw3Gk2+EABRmuaxf0vyOpo pFxbchk6cGn2aR5Bj9dQ0bJWpGlqkTcVV5c8n6aGxaPBOmJ6QU5G7Sj/E P1htR0T97tBzHC4Wxz2ttfNFr9vfOm9PsXieHynn9T/hmm5vLn1a6Pxyn LOXZXmiGLoeyzVXav+pU9ppxu95QOoZAEaeyc+UVfeKXpB6rzr6/engby g==; X-IronPort-AV: E=Sophos;i="5.91,299,1647327600"; d="scan'208";a="177852618" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa1.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 14 Jun 2022 01:19:42 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.17; Tue, 14 Jun 2022 01:19:41 -0700 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.17 via Frontend Transport; Tue, 14 Jun 2022 01:19:41 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AquRy8vpq9S8dllC+ZTbunEjfvDYO/Vg0VJYcofi617MUIpxJAcCIw+eHSdDbC6r2MGxgCppx9KMQr3lgQe2pHk2y/HbPLyDOKSnGpZTVdph9ow1GSJCjkq3uLCU6HkmGGLbRxIUoLDHkel4dtRcg55cD9Ejrh0u5RVUDZCMKYVL0zvz2BYlBL9j/xMC27NFu7a0vbkQVU9VPE3RsiKSx7E1OfSRF0kEqae3B8pN27I2zDw/QGn1xfiStf5Y0vX5omn37jT+KWoUPpKPEb8TWnyus7XfxyoaLHhv3Fc59Myz3lxhWbdjJlGtFy7f/CPp6lkr/y4FBhivWFmP/+nREw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=EmMvnuTjy5FOfEsTrAQLjeKDRSqzcx2Mtrq+qgCLs0A=; b=GesmPe9uz3ptPvJ27/z8WSrudOc9jS/aaGpj3VqBqVMaK9kCZuqQhkd7CjLkSExQbHHqZfwt3p0lWf6C0snRX9PWbpl+/uDK5VvcISSW950UK1Pl73Mg5CvqLxyCVkHH68yuRaYiSqtCLnd/aCU26fgMj2tRffHne0YQJAhlQddazihdsChAHxst7u0F7Q7Q0Y2h/Ohd6EEqAoxkH3Fn8UGowEGy7fJB2x/n/0quPI5PPBdo43xaD3JDt9eDZBa0BT/Q06wAWsLC8VFndof14yfbLmqvmXHB69hwgk9vraxAPNT+bUofxWLczvlVl60R21x1zB82r02PK0V++J7vCA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microchip.com; dmarc=pass action=none header.from=microchip.com; dkim=pass header.d=microchip.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector2-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EmMvnuTjy5FOfEsTrAQLjeKDRSqzcx2Mtrq+qgCLs0A=; b=bnMaphWQP8ZZr1MxOwiScj6kOoE8x8qDmZvVhtRWN/ygK1mOTBld7il6mUyHPXMvThRn4ClVwew7oYG3jzkHGym1TSST8X9kK1OfBeNfUyuXh0a6xC9c2rbXZ0edudLUew4k3ZO/DSez45FvXCYYvVeLAYlc1uhEElOo566ny9A= Received: from BN6PR11MB1953.namprd11.prod.outlook.com (2603:10b6:404:105::14) by BN6PR11MB1698.namprd11.prod.outlook.com (2603:10b6:404:42::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5332.12; Tue, 14 Jun 2022 08:19:36 +0000 Received: from BN6PR11MB1953.namprd11.prod.outlook.com ([fe80::5cfe:8088:aa93:fce8]) by BN6PR11MB1953.namprd11.prod.outlook.com ([fe80::5cfe:8088:aa93:fce8%3]) with mapi id 15.20.5332.022; Tue, 14 Jun 2022 08:19:36 +0000 From: To: Subject: Re: [PATCH 02/16] iio: adc: at91-sama5d2_adc: lock around oversampling and sample freq Thread-Topic: [PATCH 02/16] iio: adc: at91-sama5d2_adc: lock around oversampling and sample freq Thread-Index: AQHYf8d7pN0ZTuk1yUS9W5Nq7HVSFg== Date: Tue, 14 Jun 2022 08:19:36 +0000 Message-ID: <3020793b-395d-c62e-febf-a7d553337da3@microchip.com> References: <20220609083213.1795019-1-claudiu.beznea@microchip.com> <20220609083213.1795019-3-claudiu.beznea@microchip.com> <20220611183046.5515c001@jic23-huawei> In-Reply-To: <20220611183046.5515c001@jic23-huawei> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.1 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microchip.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 83f896a8-eabc-4b25-c6ca-08da4dde9e91 x-ms-traffictypediagnostic: BN6PR11MB1698:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: wgXV/dwBTFHeAJcWVTE6vl5J9zjYNr1/hlKwS5W72LMVof/+6Hw84qjcD/HbmQpp9vv32ION/g7Vc0YD+9osaaOt2/GuLuHBrpZNSy89U9sv8/XVsg61zmHF2FRclwflHVNQYZoi4DKhaNZd1aDBTixtTcJY88bedKn8+9609VK4F1zK2KjK5WcrZon1AcaYk+QK2/WOd0Cx1rIKYhGDgvaBvZJEhxWdNl3SpryeonFbpVq5xSytd3yP8ffknE68qi8Q7T6o05rxLuAnDkOxZSivP3BLJKpZDRfsh3mg85N+vP0+31BVBwSv79gLk55E7o+iVMFmVE4Skvz3jmU69W5v1ru4x0juBiCGmL/Fl1lc8QMkM3uO8Yx1Kf+KZWE7lQlLygxMeigN87wbPEeUUWmvnlW6zGnI71msMq6OfbBuYLuTWEiQukZ/RkPt+xOg+dwBCRMUTZFo1DtCP0heGTBGlU47Av4lKUeCJ2tEzGIh7vd8QxOY7vBRmBGbAUfkT6qS0vMVdmAEW14gSkpHzKBvSrTEas8bq/CDzQp2tiywD+94hLs3nfaTgUzOepjoFN43IaNSPHvXxviYGEmZfPI1S2RqxtVNWHcxAqE3tnPLjw5LD9jSaFzpaQTJ6T6QuciZvDB6fRygLsSYVXZbMgWnih3V7LTS4xtC2aDRhnAKpIxjd7cQloITCsAJ4SYQT9iNqHXRF/exLHrgT2zJZBTqLvwN30Ni6GEKKqjsGZGDKnoqYnGnS4a1S3aRTqGGGR/dzpfin3WBh6NVeqXWew== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN6PR11MB1953.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(366004)(66946007)(316002)(508600001)(6486002)(53546011)(91956017)(54906003)(6512007)(71200400001)(36756003)(86362001)(6916009)(5660300002)(8676002)(26005)(2616005)(2906002)(64756008)(4326008)(66446008)(66476007)(66556008)(31686004)(76116006)(7416002)(8936002)(31696002)(186003)(83380400001)(6506007)(38100700002)(122000001)(38070700005)(45980500001)(43740500002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?TENmYUN4YnVtWWZHZVF6T1BQZTM4bzYrODlPcmkwQldsQnpnclhZanlHWmVX?= =?utf-8?B?ZEJjNFRIOG5ZOHZJRnQ0OUFWTXBJV2VOVXBhOVZiSGpMaEJ4T293MGxpcklW?= =?utf-8?B?aXJGMzFLeHBLeGJHWDFJOXA5aEF5ME1MTDdxWmRFbjlLS0lhenF3Y0ZQZFZO?= =?utf-8?B?WXhTb0JJdWJ2SnkzZUUxTmZhNVZteGJ5TmUvTnlNTURGZTFIcnZUb0J1NHFL?= =?utf-8?B?L2NpRWVaRllqMmNYKzNtdkRHRkhOSzI2N1kzVDJoMjNTajVqODEzbTY0V1Nt?= =?utf-8?B?cmc3WGpyNmVHUW5RMGcwL3dGQlFOQTI3bldKNk5UQUdwa3dnTWlHM0tZVG9k?= =?utf-8?B?WVpXK3FZQ1kxSnpaY0ZGamlFTEtLRnVXdDIwOHhEVkxvUDk0a2xXWG4xRzFq?= =?utf-8?B?dTBBbitxZ0dGRFhqTGVJdlJ1RHJXSGZpRkdXU1IrTEVsQ2tKSDRyWER1UVJL?= =?utf-8?B?dG9NTGFTZXYvMlAvLzFMOEdiODFjaUxUL3FQQVFlMEhyZlZRUVRYK2xsaXdF?= =?utf-8?B?dk9UVGJrY1FyaHA3TWRLVTB0QUtiY0UwWXhPL255NlN2TDRIY0grN2lEQjZj?= =?utf-8?B?ZWNnaHc4YmhlWitIU3pSMktjM042VUg0V2REekRQMVJTSlBYWlBQanovVndp?= =?utf-8?B?TjMvQVFxZ0N5alhVeTl6SVcxRWR1K2dCQkJRNmVHZ0Iwd0NDU0dPc29OQzFX?= =?utf-8?B?ZHZYZDA4UXpJcWE0WERZYjlrUzVINFJkd3Jia1N0eXFpdUx0NVdPS2wxUU45?= =?utf-8?B?U0lGSVE3OU1oditXeFJaSVZaWjY0WnRJRDV4MUovQmJ6a3kvc041aWdrUE44?= =?utf-8?B?OGpoTVJpRFh5YmYyckNWUlMwV1p3UktTSGMvd3VweGNMVU9IMWhqVmhMYzhp?= =?utf-8?B?aFowYVBuSVZvYVAvdGFBcXZVMk0rMkJVRXpaQnV6TjBBNFRyY29Tdnd3YTQz?= =?utf-8?B?TWpBZXhMT29kaS8rellrV1hpdm56ay9wLzR3L2FLTjhNQm54Q0ZEUkNXSlhV?= =?utf-8?B?emJRWWZRTzlhcCsycEJhMGxyd3V3WDFxVmorYzllWUZ4OUoxTzAwam5CbDgz?= =?utf-8?B?eFVmMWUveWRIcnZmd21Na1NqK2NDUlJyemxtSXp2c05GMVAxdWZRUEhyWWFK?= =?utf-8?B?Y2Z0RzJMZkhFMmdhdWNaRDg0eXUwWnJXeXh2N2hhUVRHcEduOXFtM285MDRG?= =?utf-8?B?cU5Kc2tiUm1ZVjRrWU10Y2NOQzYvb0x2WDQ2d3pkYW1ocjIyajduM0Urd1hY?= =?utf-8?B?M1BtMGR1aG1nQWRzTzcvRFAzZCtSNGQ5SUh0NE9veXpWYVZrTXA2MTFET0Nh?= =?utf-8?B?V3N4blBFREZkdXpmUXpLQzFUMitac3RsRWtPRDA5MkxzcTM3UWRLR2ErQW5G?= =?utf-8?B?MnRFdU9aR2I2cm1pNXNqZDhxWEpxdkluT3pnaTJkYXhudE1xWllnVmJvK1pl?= =?utf-8?B?RmJaS3pIZjFhL0d4RVlhc3RkakFYSTBVSzk3TlBqSUVRWTFXNmdyeXBzSWM0?= =?utf-8?B?Z1VoYUxCdDJKL1VoQmV3SGwzNjZsMFpRZExKTXZ0UURQZDZKUWg4RmhJWGlV?= =?utf-8?B?MHRnQWl4c0xKNTZ6SVFpU1JYWnVjaml3OURZTjJnWEtCRGdhNldqK3p6akFZ?= =?utf-8?B?eVdrM2FxektjWG9Tc3VYMC9DeHdpVlB0ZUNpTEx3T2doeHJreDNkcWIvdUVD?= =?utf-8?B?N09BdmhUdEdxcW10Snl1V2dyR0NVZ3JicjJYTndpbGhhSllrcHRtbFhVanZl?= =?utf-8?B?MUlIMGdoeDNHY1RNcXJGY2UwNk5LSDJRcStCYWxTaTFJSUVDL1BKWmJiYVpX?= =?utf-8?B?c1kxZzRsV1E2c3dIZTlaTU5BYzNxZ0F1dzFVU1VXOEllNDR2eG9TYlRueUp1?= =?utf-8?B?cDNKdzZZQmQwU0RJMFNEYTk1TEtRN1BmOGVlZDIwMm1zL0JwVlhybU5XQ0k5?= =?utf-8?B?YmpVZzRzejdta1ZhT25BN3VuZnBsRWp2bWxKdXk4TGxpOWp2a3JPQUpZb2Ru?= =?utf-8?B?OXJnZXZMVk1PZ09naEw5Zm5mZVE3ZEY1b2hnMTYzUjhqcXZnRWxZQmtBN096?= =?utf-8?B?K2FhVWwyZTFpakNiRWtOakNwQTBwSnBTY1VWTk15TFJxazZTUG5VVlc2SlZw?= =?utf-8?B?aFdNVENvT1N0d2VrOGR1cUI2UWI0bzV3dEt0OWg2YzJCYmhEb2tjanFvYVZq?= =?utf-8?B?OUsrVXo1Wjg2NHE2T1NQN2YvSDV4OGl6YU1WaDM4aHk0Q3NLQ3dURkh5NU1x?= =?utf-8?B?RDk5d3NMZEFzREN5S1dDZndMdDU3UWFjU3Y0VFZTTzhWS1lUWms1M0d3UnVy?= =?utf-8?B?V2ZIMmNwL3VvalMwaVQ5U0J5S1dnZFVsR3pVOERJb29sVi9sYTNub0h5TUtt?= =?utf-8?Q?yXQDNr/VvKkiWHfQ=3D?= Content-ID: MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN6PR11MB1953.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 83f896a8-eabc-4b25-c6ca-08da4dde9e91 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Jun 2022 08:19:36.4466 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: evHFPpGfkaYnGQyKv0Fu1VX36KmT04Pg3dijzCkcmZeL95b755rEFgZ9JOUof6aqymBDvbBJJbJJfsDal7g5OKdWSUfEWfT/jH1iDVjwzB8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR11MB1698 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220614_011945_258257_21CCDA73 X-CRM114-Status: GOOD ( 23.98 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, alexandre.belloni@bootlin.com, lars@metafoo.de, ludovic.desroches@atmel.com, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, robh+dt@kernel.org, Eugen.Hristev@microchip.com, krzk+dt@kernel.org, linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On 11.06.2022 20:30, Jonathan Cameron wrote: > EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe > > On Thu, 9 Jun 2022 11:31:59 +0300 > Claudiu Beznea wrote: > >> .read_raw()/.write_raw() could be called asynchronously from user space >> or other in kernel drivers. Without locking on st->lock these could be >> called asynchronously while there is a conversion in progress. Read will >> be harmless but changing registers while conversion is in progress may >> lead to inconsistent results. Thus, to avoid this lock st->lock. > > The patch makes sense, but I'm not convinced all of the changes below > involve any changes to registers. E.g. at91_adc_adjust_val_osr() > is using the cached value of something in a register, but not the > register itself, so please update the description to mention cached state. > > Other comments inline. >> >> Fixes: 27e177190891 ("iio:adc:at91_adc8xx: introduce new atmel adc driver") >> Fixes: 6794e23fa3fe ("iio: adc: at91-sama5d2_adc: add support for oversampling resolution") >> Signed-off-by: Claudiu Beznea >> --- >> drivers/iio/adc/at91-sama5d2_adc.c | 17 ++++++++++++++--- >> 1 file changed, 14 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/iio/adc/at91-sama5d2_adc.c b/drivers/iio/adc/at91-sama5d2_adc.c >> index 32b6f157b803..a672a520cdc0 100644 >> --- a/drivers/iio/adc/at91-sama5d2_adc.c >> +++ b/drivers/iio/adc/at91-sama5d2_adc.c >> @@ -1542,10 +1542,11 @@ static int at91_adc_read_info_raw(struct iio_dev *indio_dev, >> ret = at91_adc_read_position(st, chan->channel, >> &tmp_val); >> *val = tmp_val; >> + ret = at91_adc_adjust_val_osr(st, val); >> mutex_unlock(&st->lock); >> iio_device_release_direct_mode(indio_dev); >> >> - return at91_adc_adjust_val_osr(st, val); >> + return ret; >> } >> if (chan->type == IIO_PRESSURE) { >> ret = iio_device_claim_direct_mode(indio_dev); >> @@ -1556,10 +1557,11 @@ static int at91_adc_read_info_raw(struct iio_dev *indio_dev, >> ret = at91_adc_read_pressure(st, chan->channel, >> &tmp_val); >> *val = tmp_val; >> + ret = at91_adc_adjust_val_osr(st, val); >> mutex_unlock(&st->lock); >> iio_device_release_direct_mode(indio_dev); >> >> - return at91_adc_adjust_val_osr(st, val); >> + return ret; >> } >> >> /* in this case we have a voltage channel */ >> @@ -1620,11 +1622,15 @@ static int at91_adc_read_raw(struct iio_dev *indio_dev, >> return IIO_VAL_FRACTIONAL_LOG2; >> >> case IIO_CHAN_INFO_SAMP_FREQ: >> + mutex_lock(&st->lock); >> *val = at91_adc_get_sample_freq(st); > > So this is a straight read of a cached value. The only thing you 'might' > arguably be protecting against is read/write tearing due to it in theory > being possible to write part of the value whilst reading. Yes, for these kind of scenarios I kept the lock around cached values, too. > I don't > see that being a concern for st->current_sample_rate I am not fully aware of all the user space tools that are retrieving this and how this is used and thus I kept the lock also around the cached values to protect the user space tools being polluted with wrong values, if any. > >> + mutex_unlock(&st->lock); >> return IIO_VAL_INT; >> >> case IIO_CHAN_INFO_OVERSAMPLING_RATIO: >> + mutex_lock(&st->lock); >> *val = st->oversampling_ratio; > Likewise, what are you protecting against racing with this that can't > just occur before or after the lock? Same as above. > >> + mutex_unlock(&st->lock); >> return IIO_VAL_INT; >> >> default: >> @@ -1644,18 +1650,23 @@ static int at91_adc_write_raw(struct iio_dev *indio_dev, >> (val != AT91_OSR_16SAMPLES)) >> return -EINVAL; >> /* if no change, optimize out */ >> + mutex_lock(&st->lock); >> if (val == st->oversampling_ratio) >> - return 0; > It should be race free to check this outside the lock. > > Definitely valid to lock around the cached value write and the config > write though. > >> + goto unlock; > If you did want to have locking as now then flip the logic > > if (val != st->oversampling_ratio) { > st->oversampling_ratio = val; > at91_adc_config_emr(st); > } > mutex_unlock() > .. > OK, thanks! > Goto always have a cost in readability so if you can avoid them with > a simple flip of logic like this it is usually a good idea. > (exception is error code which should always be out of line as > that is more common so what we expect to see). > >> st->oversampling_ratio = val; >> /* update ratio */ >> at91_adc_config_emr(st); >> +unlock: >> + mutex_unlock(&st->lock); >> return 0; >> case IIO_CHAN_INFO_SAMP_FREQ: >> if (val < st->soc_info.min_sample_rate || >> val > st->soc_info.max_sample_rate) >> return -EINVAL; >> >> + mutex_lock(&st->lock); >> at91_adc_setup_samp_freq(indio_dev, val); >> + mutex_unlock(&st->lock); >> return 0; >> default: >> return -EINVAL; > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel