From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.linuxfoundation.org ([140.211.169.12]:48370 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751542AbcKIIgG (ORCPT ); Wed, 9 Nov 2016 03:36:06 -0500 Subject: Patch "i2c: mark device nodes only in case of successful instantiation" has been added to the 4.8-stable tree To: ralf@ramses-pyramidenbau.de, geert+renesas@glider.be, gregkh@linuxfoundation.org, pantelis.antoniou@konsulko.com, wsa@the-dreams.de Cc: , From: Date: Wed, 09 Nov 2016 09:35:58 +0100 Message-ID: <147868055815882@kroah.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: 8bit Sender: stable-owner@vger.kernel.org List-ID: This is a note to let you know that I've just added the patch titled i2c: mark device nodes only in case of successful instantiation to the 4.8-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: i2c-mark-device-nodes-only-in-case-of-successful-instantiation.patch and it can be found in the queue-4.8 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let know about it. >>From 6a676fb69dcbf3310b9e462c1db66c8e7f6ead38 Mon Sep 17 00:00:00 2001 From: Ralf Ramsauer Date: Mon, 17 Oct 2016 15:59:57 +0200 Subject: i2c: mark device nodes only in case of successful instantiation From: Ralf Ramsauer commit 6a676fb69dcbf3310b9e462c1db66c8e7f6ead38 upstream. Instantiated I2C device nodes are marked with OF_POPULATE. This was introduced in 4f001fd30145a6. On unloading, loaded device nodes will of course be unmarked. The problem are nodes that fail during initialisation: If a node fails, it won't be unloaded and hence not be unmarked. If a I2C driver module is unloaded and reloaded, it will skip nodes that failed before. Skip device nodes that are already populated and mark them only in case of success. Fixes: 4f001fd30145a6 ("i2c: Mark instantiated device nodes with OF_POPULATE") Signed-off-by: Ralf Ramsauer Reviewed-by: Geert Uytterhoeven Acked-by: Pantelis Antoniou [wsa: use 14-digit commit sha] Signed-off-by: Wolfram Sang Signed-off-by: Greg Kroah-Hartman --- drivers/i2c/i2c-core.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) --- a/drivers/i2c/i2c-core.c +++ b/drivers/i2c/i2c-core.c @@ -1592,6 +1592,7 @@ static struct i2c_client *of_i2c_registe static void of_i2c_register_devices(struct i2c_adapter *adap) { struct device_node *node; + struct i2c_client *client; /* Only register child devices if the adapter has a node pointer set */ if (!adap->dev.of_node) @@ -1602,7 +1603,14 @@ static void of_i2c_register_devices(stru for_each_available_child_of_node(adap->dev.of_node, node) { if (of_node_test_and_set_flag(node, OF_POPULATED)) continue; - of_i2c_register_device(adap, node); + + client = of_i2c_register_device(adap, node); + if (IS_ERR(client)) { + dev_warn(&adap->dev, + "Failed to create I2C device for %s\n", + node->full_name); + of_node_clear_flag(node, OF_POPULATED); + } } } @@ -2201,6 +2209,7 @@ static int of_i2c_notify(struct notifier if (IS_ERR(client)) { dev_err(&adap->dev, "failed to create client for '%s'\n", rd->dn->full_name); + of_node_clear_flag(rd->dn, OF_POPULATED); return notifier_from_errno(PTR_ERR(client)); } break; Patches currently in stable-queue which might be from ralf@ramses-pyramidenbau.de are queue-4.8/i2c-mark-device-nodes-only-in-case-of-successful-instantiation.patch queue-4.8/spi-mark-device-nodes-only-in-case-of-successful-instantiation.patch