From mboxrd@z Thu Jan 1 00:00:00 1970 From: Robert =?ISO-8859-1?Q?Sch=F6ne?= Subject: Re: PROBLEM: Kernel OOPS and possible system freeze after concurrent writing to cpufreq/scaling_governor (Resend) Date: Mon, 08 Sep 2014 10:13:51 +0200 Message-ID: <1410164031.6159.16.camel@x200t> References: <1405522398.2348.42.camel@x200t> <1406185912.2406.3.camel@x200t> <1406277769.2399.4.camel@x200t> Mime-Version: 1.0 Content-Type: multipart/signed; micalg="sha-1"; protocol="application/x-pkcs7-signature"; boundary="=-Ep5uZYY4C+DsmQVZSW/7" Return-path: Received: from mailout2.zih.tu-dresden.de ([141.30.67.73]:43715 "EHLO mailout2.zih.tu-dresden.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752997AbaIHIqf (ORCPT ); Mon, 8 Sep 2014 04:46:35 -0400 In-Reply-To: Sender: linux-pm-owner@vger.kernel.org List-Id: linux-pm@vger.kernel.org To: Viresh Kumar Cc: "Srivatsa S. Bhat" , "Rafael J. Wysocki" , "linux-pm@vger.kernel.org" --=-Ep5uZYY4C+DsmQVZSW/7 Content-Type: text/plain; charset="UTF-7" Content-Transfer-Encoding: quoted-printable The patch you suggested did not work, so I introduced a new mutex in the patch below. I am not happy with adding just another mutex, but it fixes my problem of changing governors concurrently. Robert This patch fixes a race condition when concurrently writing to cpufreq/scal= ing+AF8-governor diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index d9fdedd..2ad6b03 100644 --- a/drivers/cpufreq/cpufreq.c +-+-+- b/drivers/cpufreq/cpufreq.c +AEAAQA -572,8 +-572,15 +AEAAQA static ssize+AF8-t show+AF8-scaling+AF8-gov= ernor(struct cpufreq+AF8-policy +ACo-policy, char +ACo-buf) +AH0 =20 /+ACoAKg +- +ACo This mutex guarantees, that a concurrent writing to cpuX/scaling+AF= 8-governor +- +ACo does not run into an OOPS. +- +ACo-/ +-static DEFINE+AF8-MUTEX(cpufreq+AF8-store+AF8-governor+AF8-lock)+ADs +- +-/+ACoAKg +ACo store+AF8-scaling+AF8-governor - store policy for the specified CPU +ACo-/ +- static ssize+AF8-t store+AF8-scaling+AF8-governor(struct cpufreq+AF8-polic= y +ACo-policy, const char +ACo-buf, size+AF8-t cou= nt) +AHs +AEAAQA -593,11 +-600,15 +AEAAQA static ssize+AF8-t store+AF8-scaling+AF8-g= overnor(struct cpufreq+AF8-policy +ACo-policy, +ACY-new+AF8-policy.governo= r)) return -EINVAL+ADs =20 +- if (+ACE mutex+AF8-trylock(+ACY-cpufreq+AF8-store+AF8-governor+AF8= -lock)) +- return -EBUSY+ADs +- ret +AD0 cpufreq+AF8-set+AF8-policy(policy, +ACY-new+AF8-policy)+AD= s =20 policy-+AD4-user+AF8-policy.policy +AD0 policy-+AD4-policy+ADs policy-+AD4-user+AF8-policy.governor +AD0 policy-+AD4-governor+ADs =20 +- mutex+AF8-unlock(+ACY-cpufreq+AF8-store+AF8-governor+AF8-lock)+ADs if (ret) return ret+ADs else --=-Ep5uZYY4C+DsmQVZSW/7 Content-Type: application/x-pkcs7-signature; name="smime.p7s" Content-Disposition: attachment; filename="smime.p7s" Content-Transfer-Encoding: base64 MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIVkjCCBNUw ggO9oAMCAQICCFBOxvU9EbRkMA0GCSqGSIb3DQEBCwUAMHExCzAJBgNVBAYTAkRFMRwwGgYDVQQK ExNEZXV0c2NoZSBUZWxla29tIEFHMR8wHQYDVQQLExZULVRlbGVTZWMgVHJ1c3QgQ2VudGVyMSMw IQYDVQQDExpEZXV0c2NoZSBUZWxla29tIFJvb3QgQ0EgMjAeFw0xNDA3MjIxMjA4MjZaFw0xOTA3 MDkyMzU5MDBaMFoxCzAJBgNVBAYTAkRFMRMwEQYDVQQKEwpERk4tVmVyZWluMRAwDgYDVQQLEwdE Rk4tUEtJMSQwIgYDVQQDExtERk4tVmVyZWluIFBDQSBHbG9iYWwgLSBHMDEwggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQDpm8NnhfkNrvWNVMOWUDU9YuluTO2U1wBblSJ01CDrNI/W7MAx BAuZgeKmFNJSoCgjhIt0iQReW+DieMF4yxbLKDU5ey2QRdDtoAB6fL9KDhsAw4bpXCsxEXsM84Ik Q4wcOItqaACa7txPeKvSxhObdq3u3ibo7wGvdA/BCaL2a869080UME/15eOkyGKbghoDJzANAmVg Te3RCSMqljVYJ9N2xnG2kB3E7f81hn1vM7PbD8URwoqDoZRdQWvY0hD1TP3KUazZve+Sg7va64sW VlZDz+HVEz2mHycwzUlU28kTNJpxdcVs6qcLmPkhnSevPqM5OUhqjK3JmfvDEvK9AgMBAAGjggGG MIIBgjAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFEm3xs/oPR9/6kR7Eyn38QpwPt5kMB8GA1Ud IwQYMBaAFDHDeRu69VPXF+CJei0XbAqzK50zMBIGA1UdEwEB/wQIMAYBAf8CAQIwYgYDVR0gBFsw WTARBg8rBgEEAYGtIYIsAQEEAgIwEQYPKwYBBAGBrSGCLAEBBAMAMBEGDysGAQQBga0hgiwBAQQD ATAPBg0rBgEEAYGtIYIsAQEEMA0GCysGAQQBga0hgiweMD4GA1UdHwQ3MDUwM6AxoC+GLWh0dHA6 Ly9wa2kwMzM2LnRlbGVzZWMuZGUvcmwvRFRfUk9PVF9DQV8yLmNybDB4BggrBgEFBQcBAQRsMGow LAYIKwYBBQUHMAGGIGh0dHA6Ly9vY3NwMDMzNi50ZWxlc2VjLmRlL29jc3ByMDoGCCsGAQUFBzAC hi5odHRwOi8vcGtpMDMzNi50ZWxlc2VjLmRlL2NydC9EVF9ST09UX0NBXzIuY2VyMA0GCSqGSIb3 DQEBCwUAA4IBAQBjICj9nCGGcr45Rlk5MiW8qQGbDczKfUGchm0KbiyzE1l1sTOSG2EnFv/DstU1 gvuEKgFJvWa7Zi+ywgZdbj9u4wFaW8pDY1yVtuExpx/VB19N5mWCTjL5w3x6S81NXHTuIfJ1AuxS PtLJatOQI25JZzW+f01WpOzML8+3oZeocj7JvEDWWqQIPda8gsO3tzKOsSyOam23NQIZz/U5RFhj pyQAELC7/E6vbi84u6VXST/YblBvLJeW3B1GmmWJz67M8uXZn1OzPqEvkqnYC8aEHwTG6x7on321 e6UC8STFJGMRNMxakyAqeYg6JUKQqWU7fIbTEhUjKfws2sw5W1QXMIIFYTCCBEmgAwIBAgIHF6Qk eWhcjjANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJERTETMBEGA1UEChMKREZOLVZlcmVpbjEQ MA4GA1UECxMHREZOLVBLSTEkMCIGA1UEAxMbREZOLVZlcmVpbiBQQ0EgR2xvYmFsIC0gRzAxMB4X DTE0MDUyNzE0NTMyOVoXDTE5MDcwOTIzNTkwMFowgYUxCzAJBgNVBAYTAkRFMSgwJgYDVQQKEx9U ZWNobmlzY2hlIFVuaXZlcnNpdGFldCBEcmVzZGVuMQwwCgYDVQQLEwNaSUgxHDAaBgNVBAMTE1RV IERyZXNkZW4gQ0EgLSBHMDIxIDAeBgkqhkiG9w0BCQEWEXBraUB0dS1kcmVzZGVuLmRlMIIBIjAN BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwQ4ek/NE9uzQJ/dQemELBDQVk/yxH2xj2oDs4TNc NQo8dyAgopWAoCXiD0JgWU/UWpccRds9jhgz3EU7qnGhT5ILXRmsNQRRCF/pBntyLc9hpWiiz50A R8HKfjg4/DnYLw+MGamJL7I2g8dXJNrKRx1cSxIf+8m3sSS939c2rajyZCtnybjnnlM9yKe+LD6o Sp90AOUOROCVB5b4d5eEwxa25hCDJ7Uaqyfi2htiQkNhvYXxFL8XqN2a+svPCHRvnex26flyZGWK Dnp1SLZvc/mrc6PjQcXZlvJw9NMSQBudsUEsDeB0fqrY9AnJzLY+Nc17+rpdhO5bUbm6jTN7JwID AQABo4IB/jCCAfowEgYDVR0TAQH/BAgwBgEB/wIBATAOBgNVHQ8BAf8EBAMCAQYwEQYDVR0gBAow CDAGBgRVHSAAMB0GA1UdDgQWBBTFK1OTF4PJ9UZC7UNq37aApkfy4DAfBgNVHSMEGDAWgBRJt8bP 6D0ff+pEexMp9/EKcD7eZDAcBgNVHREEFTATgRFwa2lAdHUtZHJlc2Rlbi5kZTCBiAYDVR0fBIGA MH4wPaA7oDmGN2h0dHA6Ly9jZHAxLnBjYS5kZm4uZGUvZ2xvYmFsLXJvb3QtY2EvcHViL2NybC9j YWNybC5jcmwwPaA7oDmGN2h0dHA6Ly9jZHAyLnBjYS5kZm4uZGUvZ2xvYmFsLXJvb3QtY2EvcHVi L2NybC9jYWNybC5jcmwwgdcGCCsGAQUFBwEBBIHKMIHHMDMGCCsGAQUFBzABhidodHRwOi8vb2Nz cC5wY2EuZGZuLmRlL09DU1AtU2VydmVyL09DU1AwRwYIKwYBBQUHMAKGO2h0dHA6Ly9jZHAxLnBj YS5kZm4uZGUvZ2xvYmFsLXJvb3QtY2EvcHViL2NhY2VydC9jYWNlcnQuY3J0MEcGCCsGAQUFBzAC hjtodHRwOi8vY2RwMi5wY2EuZGZuLmRlL2dsb2JhbC1yb290LWNhL3B1Yi9jYWNlcnQvY2FjZXJ0 LmNydDANBgkqhkiG9w0BAQsFAAOCAQEAiYTAQ+DoeD14UcBAq1oKJgw5xCwwxYeBTdXtoNIGGyi4 P5ANIMOkSiJoeBoU0QGxDcVtjMvrR2ihY7cEHQWmp4pZOAzefNY6sY6N+4zxMA5jTc0/FOLLIsJp DA9m1jNr03HO5Q49oO8PrEcyCfM4tQLQleN2yU/MQVY9D0KRbqmFb2M4DKvijbRp+GMogQDMg2NR MzxILTqLze7Kl294xg2u9YKnR1iCn/aK3w1gmf2PHfmPq0qrQQB49H5wM45yILSb1CIn/gH8f+Eb 8ctDB496urh4TxXGfUAT5vr8V9p1lxDJSXH9QPyIHWoeYVKZJgECFFCbKPEGxOIFwUvwTzCCBaYw ggSOoAMCAQICBxUmUtdxRCMwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkRFMSgwJgYDVQQK Ex9UZWNobmlzY2hlIFVuaXZlcnNpdGFldCBEcmVzZGVuMQwwCgYDVQQLEwNaSUgxHDAaBgNVBAMT E1RVIERyZXNkZW4gQ0EgLSBHMDIxIDAeBgkqhkiG9w0BCQEWEXBraUB0dS1kcmVzZGVuLmRlMB4X DTEzMDEyODE5NDUxMVoXDTE2MDEyODE5NDUxMVowXjELMAkGA1UEBhMCREUxKDAmBgNVBAoTH1Rl Y2huaXNjaGUgVW5pdmVyc2l0YWV0IERyZXNkZW4xDDAKBgNVBAsTA1pJSDEXMBUGA1UEAxMOUm9i ZXJ0IFNjaG9lbmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDFhpH2XvnTtbmW/F0J PcKsjiNdpTsETjcfYOQOuMVCewQh+z6HBS390yjAYUcmE8tMN3RznQekiaxHzD5v4qHuwYUy+xHo 5twBE4QFwHKMeKBPOOu3O85Y29XZiJjMIzruGM4aEh7Smjl+ZejOs/kA3gPW3UMN6B0Qptrj2JiB 3ySU5VzZf53xLG3SJ6HxYyht51PbGZTzVLacawXNqfFCcOExESItmWFnNTc2UX3yY3PS1gxmDd9o S8lfzP2w4+dv1HansTkTY+igenxcIxWF3pHXOSmXnFCra5HO5iJ95JwpzsELB4Y5gRytB+gBMpKz CpG4nihQPu62eiFQQD5LAgMBAAGjggI/MIICOzAvBgNVHSAEKDAmMBEGDysGAQQBga0hgiwBAQQD ADARBg8rBgEEAYGtIYIsAgEEAwAwCQYDVR0TBAIwADALBgNVHQ8EBAMCBeAwHQYDVR0lBBYwFAYI KwYBBQUHAwIGCCsGAQUFBwMEMB0GA1UdDgQWBBT5116c3i5BdxkDbqsKsO5wYkzN1zAfBgNVHSME GDAWgBTFK1OTF4PJ9UZC7UNq37aApkfy4DAnBgNVHREEIDAegRxyb2JlcnQuc2Nob2VuZUB0dS1k cmVzZGVuLmRlMIGLBgNVHR8EgYMwgYAwPqA8oDqGOGh0dHA6Ly9jZHAxLnBjYS5kZm4uZGUvdHUt ZHJlc2Rlbi1jYS9wdWIvY3JsL2dfY2FjcmwuY3JsMD6gPKA6hjhodHRwOi8vY2RwMi5wY2EuZGZu LmRlL3R1LWRyZXNkZW4tY2EvcHViL2NybC9nX2NhY3JsLmNybDCB2QYIKwYBBQUHAQEEgcwwgckw MwYIKwYBBQUHMAGGJ2h0dHA6Ly9vY3NwLnBjYS5kZm4uZGUvT0NTUC1TZXJ2ZXIvT0NTUDBIBggr BgEFBQcwAoY8aHR0cDovL2NkcDEucGNhLmRmbi5kZS90dS1kcmVzZGVuLWNhL3B1Yi9jYWNlcnQv Z19jYWNlcnQuY3J0MEgGCCsGAQUFBzAChjxodHRwOi8vY2RwMi5wY2EuZGZuLmRlL3R1LWRyZXNk ZW4tY2EvcHViL2NhY2VydC9nX2NhY2VydC5jcnQwDQYJKoZIhvcNAQEFBQADggEBAHBUMei+W+WD hzdMi+g4l/Umt1ERMRGhKJ8afUt0PTbvDQ6f9YetsuSmMS7nUBLHFM1HZgHT5ux0YFs3b/6IMLS/ eKNAJIoX3QKma1yREVrGzcHq0tkIGKGJo9npRQsgbeNjGiXYO23lYTyVXrdTAx05ClDObiEQi27N taBKMiauC5unAvsaG+q2FkSWmSIcrONQrU+aB66Emwj55Tq1a7nJC8HyeLmhxg3aCKIT9G7fyHeL EO6NxhnQEIeuG3rw7ToytrjdZsVTeo6cXZIFdgMDUBMoLRRC+5HEKNO/ry9wIq7R3AJNDjFBZk8I 29J4BIIkwXIp/pmnAMeQrXKUM80wggWmMIIEjqADAgECAgcVJlLXcUQjMA0GCSqGSIb3DQEBBQUA MIGFMQswCQYDVQQGEwJERTEoMCYGA1UEChMfVGVjaG5pc2NoZSBVbml2ZXJzaXRhZXQgRHJlc2Rl bjEMMAoGA1UECxMDWklIMRwwGgYDVQQDExNUVSBEcmVzZGVuIENBIC0gRzAyMSAwHgYJKoZIhvcN AQkBFhFwa2lAdHUtZHJlc2Rlbi5kZTAeFw0xMzAxMjgxOTQ1MTFaFw0xNjAxMjgxOTQ1MTFaMF4x CzAJBgNVBAYTAkRFMSgwJgYDVQQKEx9UZWNobmlzY2hlIFVuaXZlcnNpdGFldCBEcmVzZGVuMQww CgYDVQQLEwNaSUgxFzAVBgNVBAMTDlJvYmVydCBTY2hvZW5lMIIBIjANBgkqhkiG9w0BAQEFAAOC AQ8AMIIBCgKCAQEAxYaR9l7507W5lvxdCT3CrI4jXaU7BE43H2DkDrjFQnsEIfs+hwUt/dMowGFH JhPLTDd0c50HpImsR8w+b+Kh7sGFMvsR6ObcAROEBcByjHigTzjrtzvOWNvV2YiYzCM67hjOGhIe 0po5fmXozrP5AN4D1t1DDegdEKba49iYgd8klOVc2X+d8Sxt0ieh8WMobedT2xmU81S2nGsFzanx QnDhMREiLZlhZzU3NlF98mNz0tYMZg3faEvJX8z9sOPnb9R2p7E5E2PooHp8XCMVhd6R1zkpl5xQ q2uRzuYifeScKc7BCweGOYEcrQfoATKSswqRuJ4oUD7utnohUEA+SwIDAQABo4ICPzCCAjswLwYD VR0gBCgwJjARBg8rBgEEAYGtIYIsAQEEAwAwEQYPKwYBBAGBrSGCLAIBBAMAMAkGA1UdEwQCMAAw CwYDVR0PBAQDAgXgMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAdBgNVHQ4EFgQU+dde nN4uQXcZA26rCrDucGJMzdcwHwYDVR0jBBgwFoAUxStTkxeDyfVGQu1Dat+2gKZH8uAwJwYDVR0R BCAwHoEccm9iZXJ0LnNjaG9lbmVAdHUtZHJlc2Rlbi5kZTCBiwYDVR0fBIGDMIGAMD6gPKA6hjho dHRwOi8vY2RwMS5wY2EuZGZuLmRlL3R1LWRyZXNkZW4tY2EvcHViL2NybC9nX2NhY3JsLmNybDA+ oDygOoY4aHR0cDovL2NkcDIucGNhLmRmbi5kZS90dS1kcmVzZGVuLWNhL3B1Yi9jcmwvZ19jYWNy bC5jcmwwgdkGCCsGAQUFBwEBBIHMMIHJMDMGCCsGAQUFBzABhidodHRwOi8vb2NzcC5wY2EuZGZu LmRlL09DU1AtU2VydmVyL09DU1AwSAYIKwYBBQUHMAKGPGh0dHA6Ly9jZHAxLnBjYS5kZm4uZGUv dHUtZHJlc2Rlbi1jYS9wdWIvY2FjZXJ0L2dfY2FjZXJ0LmNydDBIBggrBgEFBQcwAoY8aHR0cDov L2NkcDIucGNhLmRmbi5kZS90dS1kcmVzZGVuLWNhL3B1Yi9jYWNlcnQvZ19jYWNlcnQuY3J0MA0G CSqGSIb3DQEBBQUAA4IBAQBwVDHovlvlg4c3TIvoOJf1JrdRETERoSifGn1LdD027w0On/WHrbLk pjEu51ASxxTNR2YB0+bsdGBbN2/+iDC0v3ijQCSKF90CpmtckRFaxs3B6tLZCBihiaPZ6UULIG3j Yxol2Dtt5WE8lV63UwMdOQpQzm4hEItuzbWgSjImrgubpwL7GhvqthZElpkiHKzjUK1PmgeuhJsI +eU6tWu5yQvB8ni5ocYN2giiE/Ru38h3ixDujcYZ0BCHrht68O06Mra43WbFU3qOnF2SBXYDA1AT KC0UQvuRxCjTv68vcCKu0dwCTQ4xQWZPCNvSeASCJMFyKf6ZpwDHkK1ylDPNMYIDZjCCA2ICAQEw gZEwgYUxCzAJBgNVBAYTAkRFMSgwJgYDVQQKEx9UZWNobmlzY2hlIFVuaXZlcnNpdGFldCBEcmVz ZGVuMQwwCgYDVQQLEwNaSUgxHDAaBgNVBAMTE1RVIERyZXNkZW4gQ0EgLSBHMDIxIDAeBgkqhkiG 9w0BCQEWEXBraUB0dS1kcmVzZGVuLmRlAgcVJlLXcUQjMAkGBSsOAwIaBQCgggGpMBgGCSqGSIb3 DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE0MDkwODA4MTM1MVowIwYJKoZIhvcN AQkEMRYEFK4j4lr880SO+v7A7IxC7AQTGsMUMIGiBgkrBgEEAYI3EAQxgZQwgZEwgYUxCzAJBgNV BAYTAkRFMSgwJgYDVQQKEx9UZWNobmlzY2hlIFVuaXZlcnNpdGFldCBEcmVzZGVuMQwwCgYDVQQL EwNaSUgxHDAaBgNVBAMTE1RVIERyZXNkZW4gQ0EgLSBHMDIxIDAeBgkqhkiG9w0BCQEWEXBraUB0 dS1kcmVzZGVuLmRlAgcVJlLXcUQjMIGkBgsqhkiG9w0BCRACCzGBlKCBkTCBhTELMAkGA1UEBhMC REUxKDAmBgNVBAoTH1RlY2huaXNjaGUgVW5pdmVyc2l0YWV0IERyZXNkZW4xDDAKBgNVBAsTA1pJ SDEcMBoGA1UEAxMTVFUgRHJlc2RlbiBDQSAtIEcwMjEgMB4GCSqGSIb3DQEJARYRcGtpQHR1LWRy ZXNkZW4uZGUCBxUmUtdxRCMwDQYJKoZIhvcNAQEBBQAEggEAB4KezhKAPjYENVA5+oDKV6RyGmls kzNpVF2JRmJrqAGPkbU1BJQeNlqfnj5ASNQOuFIvUhJz1OTydefYzL8/43+HzdZxG1UyGh1CE4XY jpZkXA1ziyapRfqTTRYZ1mRX3tbO4c9Oc+p11tr7dmmwJ0wzz7NqCWPCx6q4RpAJOi5n6/6LNCTz NbtjgFlUnH2adXsjew2cEropby79/NBxZRJw36HoWm5lY0+bAlMer8rN7QSNhYQQ0yc26+eqtY4E hJ/bvv7fIibqoziE/PyzlHTa5kfZifsPLP8JvDxIBtdslgkWAGvmFUP6+trHy1MoQXSrKkFfpWBX lWCkDjJeoQAAAAAAAA== --=-Ep5uZYY4C+DsmQVZSW/7--