Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756674Ab0HPUn3 (ORCPT ); Mon, 16 Aug 2010 16:43:29 -0400 Received: from mgw2.diku.dk ([130.225.96.92]:58989 "EHLO mgw2.diku.dk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752689Ab0HPUn2 (ORCPT ); Mon, 16 Aug 2010 16:43:28 -0400 Date: Mon, 16 Aug 2010 22:43:25 +0200 (CEST) From: Julia Lawall To: Jonathan Woithe Cc: Matthew Garrett , platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org Subject: Re: [PATCH 15/16] drivers/platform/x86: Use available error codes In-Reply-To: <201008161711.o7GHBw0x007457@mercury.physics.adelaide.edu.au> Message-ID: References: <201008161711.o7GHBw0x007457@mercury.physics.adelaide.edu.au> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3650 Lines: 130 Looks ok to me. Thanks. julia On Tue, 17 Aug 2010, Jonathan Woithe wrote: > I've had a quick look at this and the idea behind it is sound. While it > does change the symantics as noted in the original post, the change is only > in an error path and to my eye the error code should be returned in that > case - as the code currently stands a 0 is returned even if ENOMEM has > occurred. > > It seems to me that error and result have been (wrongly) used interchangedly > within these two functions (possibly be different authors). I agree that > one of them should be eliminated, and error seems the sensible choice. So > something like the following is probably in order. > > === > > An error code is stored in the variable error, but it is the variable result > that is returned instead. So store the error code in result and eliminate > the unnecessary variable error. Initial report and patch from Julia Lawall > . > > The semantic match that finds this problem is as follows: > (http://coccinelle.lip6.fr/) > > // > @r@ > local idexpression x; > constant C; > @@ > > if (...) { ... > x = -C > ... when != x > ( > return <+...x...+>; > | > return NULL; > | > return; > | > * return ...; > ) > } > // > > Signed-off-by: Julia Lawall > Signed-off-by: Jonathan Woithe > > --- a/drivers/platform/x86/fujitsu-laptop.c 2010-03-16 02:39:39.000000000 +1030 > +++ b/drivers/platform/x86/fujitsu-laptop.c 2010-08-17 02:37:18.556779664 +0930 > @@ -655,7 +655,6 @@ > int result = 0; > int state = 0; > struct input_dev *input; > - int error; > > if (!device) > return -EINVAL; > @@ -667,7 +666,7 @@ > > fujitsu->input = input = input_allocate_device(); > if (!input) { > - error = -ENOMEM; > + result = -ENOMEM; > goto err_stop; > } > > @@ -684,8 +683,8 @@ > set_bit(KEY_BRIGHTNESSDOWN, input->keybit); > set_bit(KEY_UNKNOWN, input->keybit); > > - error = input_register_device(input); > - if (error) > + result = input_register_device(input); > + if (result) > goto err_free_input_dev; > > result = acpi_bus_get_power(fujitsu->acpi_handle, &state); > @@ -810,7 +809,6 @@ > int result = 0; > int state = 0; > struct input_dev *input; > - int error; > int i; > > if (!device) > @@ -824,16 +822,16 @@ > > /* kfifo */ > spin_lock_init(&fujitsu_hotkey->fifo_lock); > - error = kfifo_alloc(&fujitsu_hotkey->fifo, RINGBUFFERSIZE * sizeof(int), > + result = kfifo_alloc(&fujitsu_hotkey->fifo, RINGBUFFERSIZE * sizeof(int), > GFP_KERNEL); > - if (error) { > + if (result) { > printk(KERN_ERR "kfifo_alloc failed\n"); > goto err_stop; > } > > fujitsu_hotkey->input = input = input_allocate_device(); > if (!input) { > - error = -ENOMEM; > + result = -ENOMEM; > goto err_free_fifo; > } > > @@ -853,8 +851,8 @@ > set_bit(fujitsu->keycode4, input->keybit); > set_bit(KEY_UNKNOWN, input->keybit); > > - error = input_register_device(input); > - if (error) > + result = input_register_device(input); > + if (result) > goto err_free_input_dev; > > result = acpi_bus_get_power(fujitsu_hotkey->acpi_handle, &state); > -- > To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/