Re: [PATCH v2 7/7] tools/testing/nvdimm: fix nfit_test shutdown crashes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 04/14/2017 05:57 PM, Dan Williams wrote:
> Keep the nfit_test instances alive until after nfit_test_teardown(), as
> we may be doing resource lookups until the final un-registrations have
> completed. This fixes crashes of the form.

Sorry Dan, it didn't help in my case.

-- ljk
> 
>  BUG: unable to handle kernel NULL pointer dereference at 0000000000000038
>  IP: __release_resource+0x12/0x90
>  Call Trace:
>   remove_resource+0x23/0x40
>   __wrap_remove_resource+0x29/0x30 [nfit_test_iomap]
>   acpi_nfit_remove_resource+0xe/0x10 [nfit]
>   devm_action_release+0xf/0x20
>   release_nodes+0x16d/0x2b0
>   devres_release_all+0x3c/0x60
>   device_release+0x21/0x90
>   kobject_release+0x6a/0x170
>   kobject_put+0x2f/0x60
>   put_device+0x17/0x20
>   platform_device_unregister+0x20/0x30
>   nfit_test_exit+0x36/0x960 [nfit_test]
> 
> Reported-by: Linda Knippers <linda.knippers@xxxxxxx>
> Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx>
> ---
>  tools/testing/nvdimm/test/nfit.c |   10 +++++++++-
>  1 file changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/testing/nvdimm/test/nfit.c b/tools/testing/nvdimm/test/nfit.c
> index bc02f28ed8b8..d7fb1b894128 100644
> --- a/tools/testing/nvdimm/test/nfit.c
> +++ b/tools/testing/nvdimm/test/nfit.c
> @@ -1958,6 +1958,7 @@ static __init int nfit_test_init(void)
>  			put_device(&pdev->dev);
>  			goto err_register;
>  		}
> +		get_device(&pdev->dev);
>  
>  		rc = dma_coerce_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
>  		if (rc)
> @@ -1976,6 +1977,10 @@ static __init int nfit_test_init(void)
>  		if (instances[i])
>  			platform_device_unregister(&instances[i]->pdev);
>  	nfit_test_teardown();
> +	for (i = 0; i < NUM_NFITS; i++)
> +		if (instances[i])
> +			put_device(&instances[i]->pdev.dev);
> +
>  	return rc;
>  }
>  
> @@ -1983,10 +1988,13 @@ static __exit void nfit_test_exit(void)
>  {
>  	int i;
>  
> -	platform_driver_unregister(&nfit_test_driver);
>  	for (i = 0; i < NUM_NFITS; i++)
>  		platform_device_unregister(&instances[i]->pdev);
> +	platform_driver_unregister(&nfit_test_driver);
>  	nfit_test_teardown();
> +
> +	for (i = 0; i < NUM_NFITS; i++)
> +		put_device(&instances[i]->pdev.dev);
>  	class_destroy(nfit_test_dimm);
>  }
>  
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux