Re: [PATCH v4 4/7] ACPI: button: Use input_device_enabled() helper

2020-10-04 Thread Dmitry Torokhov
On Wed, Jun 24, 2020 at 10:24:46PM -0700, Dmitry Torokhov wrote:
> On Mon, Jun 08, 2020 at 01:22:08PM +0200, Andrzej Pietrasiewicz wrote:
> > A new helper is available, so use it.
> > 
> > Signed-off-by: Andrzej Pietrasiewicz 
> > ---
> >  drivers/acpi/button.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/acpi/button.c b/drivers/acpi/button.c
> > index ff7ab291f678..4deb2b48d03c 100644
> > --- a/drivers/acpi/button.c
> > +++ b/drivers/acpi/button.c
> > @@ -411,7 +411,7 @@ static void acpi_button_notify(struct acpi_device 
> > *device, u32 event)
> > input = button->input;
> > if (button->type == ACPI_BUTTON_TYPE_LID) {
> > mutex_lock(>input->mutex);
> > -   users = button->input->users;
> > +   users = input_device_enabled(button->input);
> > mutex_unlock(>input->mutex);
> > if (users)
> 
> This chunk (pre-patch) is really wrong. 'users' value is obsolete and
> can not be trusted the moment we unlocked the mutex. "if" needs to be
> inside critical section.

So looking at this patch and the previous one again, I believe this
driver is wrong to key the behavior off input->users and we should not
apply either of the patches. I'll post another patch fixing this.

Thanks.

-- 
Dmitry


Re: [PATCH v4 4/7] ACPI: button: Use input_device_enabled() helper

2020-06-24 Thread Dmitry Torokhov
On Mon, Jun 08, 2020 at 01:22:08PM +0200, Andrzej Pietrasiewicz wrote:
> A new helper is available, so use it.
> 
> Signed-off-by: Andrzej Pietrasiewicz 
> ---
>  drivers/acpi/button.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/acpi/button.c b/drivers/acpi/button.c
> index ff7ab291f678..4deb2b48d03c 100644
> --- a/drivers/acpi/button.c
> +++ b/drivers/acpi/button.c
> @@ -411,7 +411,7 @@ static void acpi_button_notify(struct acpi_device 
> *device, u32 event)
>   input = button->input;
>   if (button->type == ACPI_BUTTON_TYPE_LID) {
>   mutex_lock(>input->mutex);
> - users = button->input->users;
> + users = input_device_enabled(button->input);
>   mutex_unlock(>input->mutex);
>   if (users)

This chunk (pre-patch) is really wrong. 'users' value is obsolete and
can not be trusted the moment we unlocked the mutex. "if" needs to be
inside critical section.

>   acpi_lid_update_state(device, true);
> @@ -460,7 +460,7 @@ static int acpi_button_resume(struct device *dev)
>  
>   button->suspended = false;
>   mutex_lock(>mutex);
> - if (button->type == ACPI_BUTTON_TYPE_LID && input->users) {
> + if (button->type == ACPI_BUTTON_TYPE_LID && 
> input_device_enabled(input)) {
>   button->last_state = !!acpi_lid_evaluate_state(device);
>   button->last_time = ktime_get();
>   acpi_lid_initialize_state(device);
> -- 
> 2.17.1
> 

Thanks.

-- 
Dmitry


[PATCH v4 4/7] ACPI: button: Use input_device_enabled() helper

2020-06-08 Thread Andrzej Pietrasiewicz
A new helper is available, so use it.

Signed-off-by: Andrzej Pietrasiewicz 
---
 drivers/acpi/button.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/acpi/button.c b/drivers/acpi/button.c
index ff7ab291f678..4deb2b48d03c 100644
--- a/drivers/acpi/button.c
+++ b/drivers/acpi/button.c
@@ -411,7 +411,7 @@ static void acpi_button_notify(struct acpi_device *device, 
u32 event)
input = button->input;
if (button->type == ACPI_BUTTON_TYPE_LID) {
mutex_lock(>input->mutex);
-   users = button->input->users;
+   users = input_device_enabled(button->input);
mutex_unlock(>input->mutex);
if (users)
acpi_lid_update_state(device, true);
@@ -460,7 +460,7 @@ static int acpi_button_resume(struct device *dev)
 
button->suspended = false;
mutex_lock(>mutex);
-   if (button->type == ACPI_BUTTON_TYPE_LID && input->users) {
+   if (button->type == ACPI_BUTTON_TYPE_LID && 
input_device_enabled(input)) {
button->last_state = !!acpi_lid_evaluate_state(device);
button->last_time = ktime_get();
acpi_lid_initialize_state(device);
-- 
2.17.1