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]
Date:   Fri, 10 Mar 2023 10:30:14 +0000
From:   Srinivas Kandagatla <srinivas.kandagatla@...aro.org>
To:     Miquel Raynal <miquel.raynal@...tlin.com>,
        linux-kernel@...r.kernel.org
Cc:     Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
        Michael Walle <michael@...le.cc>,
        Rafał Miłecki <rafal@...ecki.pl>,
        Robert Marko <robert.marko@...tura.hr>,
        Luka Perkov <luka.perkov@...tura.hr>,
        Thomas Petazzoni <thomas.petazzoni@...tlin.com>,
        Rob Herring <robh+dt@...nel.org>,
        Frank Rowand <frowand.list@...il.com>,
        devicetree@...r.kernel.org
Subject: Re: [PATCH v2 11/21] nvmem: core: handle the absence of expected
 layouts



On 07/03/2023 16:53, Miquel Raynal wrote:
> Make nvmem_layout_get() return -EPROBE_DEFER while the expected layout
> is not available. This condition cannot be triggered today as nvmem
> layout drivers are initialed as part of an early init call, but soon
> these drivers will be converted into modules and be initialized with a
> standard priority, so the unavailability of the drivers might become a
> reality that must be taken care of.
> 
> Let's anticipate this by telling the caller the layout might not yet be
> available. A probe deferral is requested in this case.
> 
> Please note this does not affect any nvmem device not using layouts,
> because an early check against the "nvmem-layout" container presence
> will return NULL in this case.
> 
> Signed-off-by: Miquel Raynal <miquel.raynal@...tlin.com>
> Tested-by: Michael Walle <michael@...le.cc>
> ---
>   drivers/nvmem/core.c | 10 +++++++++-
>   1 file changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
> index b9be1faeb7be..51fd792b8d70 100644
> --- a/drivers/nvmem/core.c
> +++ b/drivers/nvmem/core.c
> @@ -755,7 +755,7 @@ EXPORT_SYMBOL_GPL(nvmem_layout_unregister);
>   static struct nvmem_layout *nvmem_layout_get(struct nvmem_device *nvmem)
>   {

Any reason why this is not part of 10/21?

kernel doc for nvmem_layout_get needs updating with this behavior.


--srini

>   	struct device_node *layout_np, *np = nvmem->dev.of_node;
> -	struct nvmem_layout *l, *layout = NULL;
> +	struct nvmem_layout *l, *layout = ERR_PTR(-EPROBE_DEFER);
>   
>   	layout_np = of_get_child_by_name(np, "nvmem-layout");
>   	if (!layout_np)
> @@ -938,6 +938,13 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config)
>   	 * pointer will be NULL and nvmem_layout_put() will be a noop.
>   	 */
>   	nvmem->layout = config->layout ?: nvmem_layout_get(nvmem);
> +	if (IS_ERR(nvmem->layout)) {
> +		rval = PTR_ERR(nvmem->layout);
> +		nvmem->layout = NULL;
> +
> +		if (rval == -EPROBE_DEFER)
> +			goto err_teardown_compat;
> +	}
>   
>   	if (config->cells) {
>   		rval = nvmem_add_cells(nvmem, config->cells, config->ncells);
> @@ -970,6 +977,7 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config)
>   err_remove_cells:
>   	nvmem_device_remove_all_cells(nvmem);
>   	nvmem_layout_put(nvmem->layout);
> +err_teardown_compat:
>   	if (config->compat)
>   		nvmem_sysfs_remove_compat(nvmem, config);
>   err_put_device:

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ