From patchwork Tue Dec 7 14:58:29 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 383332 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id oB7EwWSV012983 for ; Tue, 7 Dec 2010 14:58:32 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753344Ab0LGO6b (ORCPT ); Tue, 7 Dec 2010 09:58:31 -0500 Received: from vpn.id2.novell.com ([195.33.99.129]:44099 "EHLO vpn.id2.novell.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752782Ab0LGO6b convert rfc822-to-8bit (ORCPT ); Tue, 7 Dec 2010 09:58:31 -0500 Received: from EMEA1-MTA by vpn.id2.novell.com with Novell_GroupWise; Tue, 07 Dec 2010 15:31:31 +0000 Message-Id: <4CFE59A50200007800026700@vpn.id2.novell.com> X-Mailer: Novell GroupWise Internet Agent 8.0.1 Date: Tue, 07 Dec 2010 14:58:29 +0000 From: "Jan Beulich" To: "Len Brown" Cc: , Subject: [PATCH, resend] ACPI/HEST: avoid stack traces when encountering duplicate source IDs Mime-Version: 1.0 Content-Disposition: inline Sender: linux-acpi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-acpi@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter1.kernel.org [140.211.167.41]); Tue, 07 Dec 2010 14:58:32 +0000 (UTC) --- linux-2.6.37-rc5/drivers/acpi/apei/hest.c +++ 2.6.37-rc5-acpi-hest-unique/drivers/acpi/apei/hest.c @@ -139,6 +139,7 @@ static int hest_parse_ghes(struct acpi_h { struct platform_device *ghes_dev; struct ghes_arr *ghes_arr = data; + unsigned int i; int rc; if (hest_hdr->type != ACPI_HEST_TYPE_GENERIC_ERROR) @@ -146,6 +147,16 @@ static int hest_parse_ghes(struct acpi_h if (!((struct acpi_hest_generic *)hest_hdr)->enabled) return 0; + for (i = 0; i < ghes_arr->count; ++i) { + const struct acpi_hest_header *h; + + h = *(void **)dev_get_platdata(&ghes_arr->ghes_devs[i]->dev); + if (hest_hdr->source_id == h->source_id) { + pr_warn("Duplicate generic error source ID %#x\n", + hest_hdr->source_id); + return -EEXIST; + } + } ghes_dev = platform_device_alloc("GHES", hest_hdr->source_id); if (!ghes_dev) return -ENOMEM;