From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jonathan McDowell Subject: [PATCH] Fix checking for multiple boot tags in board config. Date: Fri, 7 Apr 2006 16:00:28 +0100 Message-ID: <20060407150028.GT22929@earth.li> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-omap-open-source-bounces@linux.omap.com Errors-To: linux-omap-open-source-bounces@linux.omap.com To: linux-omap-open-source@linux.omap.com List-Id: linux-omap@vger.kernel.org Currently if we look for more than one instance of a boot tag and it's defined in the board config rather than passed by the boot loader we can get stuck in a loop where the same tag is processed many times. This can be seen with the gpio-switch driver, for example. The patch below fixes this by respecting the skip parameter to get_config when we're scanning the board config structure. Signed-Off-By: Jonathan McDowell diff --git a/arch/arm/plat-omap/common.c b/arch/arm/plat-omap/common.c index 0625df5..39ab667 100644 --- a/arch/arm/plat-omap/common.c +++ b/arch/arm/plat-omap/common.c @@ -114,8 +114,12 @@ static const void *get_config(u16 tag, s * in the kernel. */ for (i = 0; i < omap_board_config_size; i++) { if (omap_board_config[i].tag == tag) { - kinfo = &omap_board_config[i]; - break; + if (skip == 0) { + kinfo = &omap_board_config[i]; + break; + } else { + skip--; + } } } if (kinfo == NULL)