[PATCH] powerpc/perf: double unlock bug in imc_common_cpuhp_mem_free()

Subsystems: linux for powerpc (32-bit and 64-bit), the rest

STALE3314d

5 messages, 4 authors, 2017-08-16 · open the first message on its own page

[PATCH] powerpc/perf: double unlock bug in imc_common_cpuhp_mem_free()

From: Dan Carpenter <hidden>
Date: 2017-08-11 20:09:43

There is a typo so we call unlock instead of lock.

Fixes: 885dcd709ba9 ("powerpc/perf: Add nest IMC PMU support")
Signed-off-by: Dan Carpenter <redacted>
---
I also don't understand how the &nest_imc_refc[node_id].lock works.  Why
can't we use ref->lock everywhere?  They seem equivalent, and my static
checker complains if we call the same lock different names.
diff --git a/arch/powerpc/perf/imc-pmu.c b/arch/powerpc/perf/imc-pmu.c
index 46cd912af060..52017f6eafd9 100644
--- a/arch/powerpc/perf/imc-pmu.c
+++ b/arch/powerpc/perf/imc-pmu.c
@@ -1124,7 +1124,7 @@ static void cleanup_all_thread_imc_memory(void)
 static void imc_common_cpuhp_mem_free(struct imc_pmu *pmu_ptr)
 {
 	if (pmu_ptr->domain == IMC_DOMAIN_NEST) {
-		mutex_unlock(&nest_init_lock);
+		mutex_lock(&nest_init_lock);
 		if (nest_pmus == 1) {
 			cpuhp_remove_state(CPUHP_AP_PERF_POWERPC_NEST_IMC_ONLINE);
 			kfree(nest_imc_refc);

Re: [PATCH] powerpc/perf: double unlock bug in imc_common_cpuhp_mem_free()

From: Michael Ellerman <mpe@ellerman.id.au>
Date: 2017-08-14 03:30:43

Dan Carpenter [off-list ref] writes:
There is a typo so we call unlock instead of lock.

Fixes: 885dcd709ba9 ("powerpc/perf: Add nest IMC PMU support")
Signed-off-by: Dan Carpenter <redacted>
---
I also don't understand how the &nest_imc_refc[node_id].lock works.  Why
can't we use ref->lock everywhere?  They seem equivalent, and my static
checker complains if we call the same lock different names.
That looks like a bug to me, ie. we should always use ref.

Maddy?

cheers
quoted hunk
diff --git a/arch/powerpc/perf/imc-pmu.c b/arch/powerpc/perf/imc-pmu.c
index 46cd912af060..52017f6eafd9 100644
--- a/arch/powerpc/perf/imc-pmu.c
+++ b/arch/powerpc/perf/imc-pmu.c
@@ -1124,7 +1124,7 @@ static void cleanup_all_thread_imc_memory(void)
 static void imc_common_cpuhp_mem_free(struct imc_pmu *pmu_ptr)
 {
 	if (pmu_ptr->domain == IMC_DOMAIN_NEST) {
-		mutex_unlock(&nest_init_lock);
+		mutex_lock(&nest_init_lock);
 		if (nest_pmus == 1) {
 			cpuhp_remove_state(CPUHP_AP_PERF_POWERPC_NEST_IMC_ONLINE);
 			kfree(nest_imc_refc);

Re: [PATCH] powerpc/perf: double unlock bug in imc_common_cpuhp_mem_free()

From: Madhavan Srinivasan <hidden>
Date: 2017-08-14 03:59:19


On Saturday 12 August 2017 01:35 AM, Dan Carpenter wrote:
There is a typo so we call unlock instead of lock.
Reviewed-by: Madhavan Srinivasan <redacted>

nest_imc_refc used to maintain list of perf sessions thats using the
nest units currently. This is needed in turning off nest engine microcode
when not in use.

Yes will send a patch to fix ref->lock change.

Thanks for fix

Maddy
quoted hunk
Fixes: 885dcd709ba9 ("powerpc/perf: Add nest IMC PMU support")
Signed-off-by: Dan Carpenter <redacted>
---
I also don't understand how the &nest_imc_refc[node_id].lock works.  Why
can't we use ref->lock everywhere?  They seem equivalent, and my static
checker complains if we call the same lock different names.
diff --git a/arch/powerpc/perf/imc-pmu.c b/arch/powerpc/perf/imc-pmu.c
index 46cd912af060..52017f6eafd9 100644
--- a/arch/powerpc/perf/imc-pmu.c
+++ b/arch/powerpc/perf/imc-pmu.c
@@ -1124,7 +1124,7 @@ static void cleanup_all_thread_imc_memory(void)
  static void imc_common_cpuhp_mem_free(struct imc_pmu *pmu_ptr)
  {
  	if (pmu_ptr->domain == IMC_DOMAIN_NEST) {
-		mutex_unlock(&nest_init_lock);
+		mutex_lock(&nest_init_lock);
  		if (nest_pmus == 1) {
  			cpuhp_remove_state(CPUHP_AP_PERF_POWERPC_NEST_IMC_ONLINE);
  			kfree(nest_imc_refc);

Re: [PATCH] powerpc/perf: double unlock bug in imc_common_cpuhp_mem_free()

From: Madhavan Srinivasan <hidden>
Date: 2017-08-14 04:02:23


On Monday 14 August 2017 09:00 AM, Michael Ellerman wrote:
Dan Carpenter [off-list ref] writes:
quoted
There is a typo so we call unlock instead of lock.

Fixes: 885dcd709ba9 ("powerpc/perf: Add nest IMC PMU support")
Signed-off-by: Dan Carpenter <redacted>
---
I also don't understand how the &nest_imc_refc[node_id].lock works.  Why
can't we use ref->lock everywhere?  They seem equivalent, and my static
checker complains if we call the same lock different names.
That looks like a bug to me, ie. we should always use ref.
ok. will send a fix.

Thanks
Maddy
Maddy?

cheers
quoted
diff --git a/arch/powerpc/perf/imc-pmu.c b/arch/powerpc/perf/imc-pmu.c
index 46cd912af060..52017f6eafd9 100644
--- a/arch/powerpc/perf/imc-pmu.c
+++ b/arch/powerpc/perf/imc-pmu.c
@@ -1124,7 +1124,7 @@ static void cleanup_all_thread_imc_memory(void)
  static void imc_common_cpuhp_mem_free(struct imc_pmu *pmu_ptr)
  {
  	if (pmu_ptr->domain == IMC_DOMAIN_NEST) {
-		mutex_unlock(&nest_init_lock);
+		mutex_lock(&nest_init_lock);
  		if (nest_pmus == 1) {
  			cpuhp_remove_state(CPUHP_AP_PERF_POWERPC_NEST_IMC_ONLINE);
  			kfree(nest_imc_refc);

Re: powerpc/perf: double unlock bug in imc_common_cpuhp_mem_free()

From: Michael Ellerman <hidden>
Date: 2017-08-16 12:29:55

On Fri, 2017-08-11 at 20:05:41 UTC, Dan Carpenter wrote:
There is a typo so we call unlock instead of lock.

Fixes: 885dcd709ba9 ("powerpc/perf: Add nest IMC PMU support")
Signed-off-by: Dan Carpenter <redacted>
Applied to powerpc next, thanks.

https://git.kernel.org/powerpc/c/b3376dcc6c62452fe24e76d8fc35bb

cheers
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help