lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20141002183455.GA19250@roeck-us.net>
Date:	Thu, 2 Oct 2014 11:34:55 -0700
From:	Guenter Roeck <linux@...ck-us.net>
To:	Feng Kan <fkan@....com>
Cc:	dbaryshkov@...il.com, linux-kernel@...r.kernel.org,
	patches@....com, linux-pm@...r.kernel.org, ser@...nel.org
Subject: Re: [PATCH 1/1] power: reset: corrections for simple syscon reboot
 driver

On Thu, Oct 02, 2014 at 11:24:15AM -0700, Feng Kan wrote:
> This patch is to fix some bugs in reboot driver. Which includes auto selection
> of the MFD_SYSCON for the driver, use of container to locate restart handler,
> correction of the count down failure timer and ordering of the header file.
> 
> Signed-off-by: Feng Kan <fkan@....com>
> ---
>  drivers/power/reset/Kconfig         |  3 ++-
>  drivers/power/reset/syscon-reboot.c | 25 ++++++++++---------------
>  2 files changed, 12 insertions(+), 16 deletions(-)
> 
> diff --git a/drivers/power/reset/Kconfig b/drivers/power/reset/Kconfig
> index addb26a..3b451e1 100644
> --- a/drivers/power/reset/Kconfig
> +++ b/drivers/power/reset/Kconfig
> @@ -120,6 +120,7 @@ config POWER_RESET_KEYSTONE
>  
>  config POWER_RESET_SYSCON
>  	bool "Generic SYSCON regmap reset driver"
> -	depends on POWER_RESET && MFD_SYSCON && OF
> +	depends on POWER_RESET && OF
> +	select MFD_SYSCON
>  	help
>  	  Reboot support for generic SYSCON mapped register reset.
> diff --git a/drivers/power/reset/syscon-reboot.c b/drivers/power/reset/syscon-reboot.c
> index 948e0ee..90dfdbf 100644
> --- a/drivers/power/reset/syscon-reboot.c
> +++ b/drivers/power/reset/syscon-reboot.c
> @@ -14,14 +14,15 @@
>   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>   * GNU General Public License for more details.
>   */
> +#include <linux/delay.h>
>  #include <linux/io.h>
> -#include <linux/of_device.h>
> -#include <linux/of_address.h>
> -#include <linux/platform_device.h>
>  #include <linux/notifier.h>
>  #include <linux/mfd/syscon.h>
> -#include <linux/regmap.h>
> +#include <linux/of_address.h>
> +#include <linux/of_device.h>
> +#include <linux/platform_device.h>
>  #include <linux/reboot.h>
> +#include <linux/regmap.h>
>  
>  struct syscon_reboot_context {
>  	struct regmap *map;
> @@ -30,21 +31,17 @@ struct syscon_reboot_context {
>  	struct notifier_block restart_handler;
>  };
>  
> -static struct syscon_reboot_context *syscon_reboot_ctx;
> -
>  static int syscon_restart_handle(struct notifier_block *this,
>  					unsigned long mode, void *cmd)
>  {
> -	struct syscon_reboot_context *ctx = syscon_reboot_ctx;
> -	unsigned long timeout;
> +	struct syscon_reboot_context *ctx =
> +			container_of(this, struct syscon_reboot_context,
> +					restart_handler);
>  
>  	/* Issue the reboot */
> -	if (ctx->map)
> -		regmap_write(ctx->map, ctx->offset, ctx->mask);
> +	regmap_write(ctx->map, ctx->offset, ctx->mask);
>  
> -	timeout = jiffies + HZ;
> -	while (time_before(jiffies, timeout))
> -		cpu_relax();
> +	mdelay(1000);
>  
>  	pr_emerg("Unable to restart system\n");
>  	return NOTIFY_DONE;
> @@ -76,8 +73,6 @@ static int syscon_reboot_probe(struct platform_device *pdev)
>  	if (err)
>  		dev_err(dev, "can't register restart notifier (err=%d)\n", err);
>  
> -	syscon_reboot_ctx = ctx;
> -
>  	return 0;

Since the driver doesn't really do anything if the restart notifier registration
call fails, you might as well return err here.

Nitpick, really, especially since the function in reality never returns an error.

Reviewed-by: Guenter Roeck <linux@...ck-us.net>

Thanks,
Guenter
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ