[coreboot-gerrit] New patch to review for coreboot: 1b8389f AMD K8: Fix add_more_links()

Kyösti Mälkki (kyosti.malkki@gmail.com) gerrit at coreboot.org
Sat Feb 28 14:50:34 CET 2015


Kyösti Mälkki (kyosti.malkki at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/8550

-gerrit

commit 1b8389fb9fc711a8a71319b6babf1e7321f7a95a
Author: Kyösti Mälkki <kyosti.malkki at gmail.com>
Date:   Sat Feb 21 23:56:07 2015 +0200

    AMD K8: Fix add_more_links()
    
    There is no requirement that in dev->link_list the last element
    would have the highest link->link_num.
    
    Also fix off-by-one error when allocating for more links.
    
    Change-Id: Id8a7db3ffb4111eb31e70ea14fd522b70368dd8c
    Signed-off-by: Kyösti Mälkki <kyosti.malkki at gmail.com>
---
 src/northbridge/amd/amdk8/northbridge.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/northbridge/amd/amdk8/northbridge.c b/src/northbridge/amd/amdk8/northbridge.c
index 63f543e..a17aa65 100644
--- a/src/northbridge/amd/amdk8/northbridge.c
+++ b/src/northbridge/amd/amdk8/northbridge.c
@@ -1165,14 +1165,16 @@ static struct device_operations pci_domain_ops = {
 static void add_more_links(device_t dev, unsigned total_links)
 {
 	struct bus *link, *last = NULL;
-	int link_num;
+	int link_num = -1;
 
-	for (link = dev->link_list; link; link = link->next)
+	for (link = dev->link_list; link; link = link->next) {
+		if (link_num < link->link_num)
+			link_num = link->link_num;
 		last = link;
+	}
 
 	if (last) {
-		int links = total_links - last->link_num;
-		link_num = last->link_num;
+		int links = total_links - (link_num + 1);
 		if (links > 0) {
 			link = malloc(links*sizeof(*link));
 			if (!link)
@@ -1182,7 +1184,6 @@ static void add_more_links(device_t dev, unsigned total_links)
 		}
 	}
 	else {
-		link_num = -1;
 		link = malloc(total_links*sizeof(*link));
 		memset(link, 0, total_links*sizeof(*link));
 		dev->link_list = link;



More information about the coreboot-gerrit mailing list