Upstream-status: BackPort [http://pkgs.fedoraproject.org/cgit/bridge-utils.git/diff/bridge-utils-1.5-check-error-returns-from-write-to-sysfs.patch?id=b0d10717fd7cebf5d85eed3f941b409fa0384f08]

Signed-off-by: Roy.Li <rongqing.li@windriver.com>

From bb9970a9df95837e39d680021b1f73d231e85406 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <shemminger@vyatta.com>
Date: Tue, 3 May 2011 09:52:43 -0700
Subject: [PATCH 3/3] Check error returns from write to sysfs

Add helper function to check write to sysfs files.

Signed-off-by: Petr Sabata <contyk@redhat.com>
---
 libbridge/libbridge_devif.c |   37 +++++++++++++++++++++++--------------
 1 files changed, 23 insertions(+), 14 deletions(-)

diff --git a/libbridge/libbridge_devif.c b/libbridge/libbridge_devif.c
index aa8bc36..1e83925 100644
--- a/libbridge/libbridge_devif.c
+++ b/libbridge/libbridge_devif.c
@@ -280,25 +280,38 @@ fallback:
 	return old_get_port_info(brname, port, info);
 }
 
+static int set_sysfs(const char *path, unsigned long value)
+{
+	int fd, ret = 0, cc;
+	char buf[32];
+
+	fd = open(path, O_WRONLY);
+	if (fd < 0)
+		return -1;
+
+	cc = snprintf(buf, sizeof(buf), "%lu\n", value);
+	if (write(fd, buf, cc) < 0)
+		ret = -1;
+	close(fd);
+
+	return ret;
+}
+
 
 static int br_set(const char *bridge, const char *name,
 		  unsigned long value, unsigned long oldcode)
 {
 	int ret;
 	char path[SYSFS_PATH_MAX];
-	FILE *f;
 
-	snprintf(path, SYSFS_PATH_MAX, SYSFS_CLASS_NET "%s/%s", bridge, name);
+	snprintf(path, SYSFS_PATH_MAX, SYSFS_CLASS_NET "%s/bridge/%s",
+		 bridge, name);
 
-	f = fopen(path, "w");
-	if (f) {
-		ret = fprintf(f, "%ld\n", value);
-		fclose(f);
-	} else {
+	if ((ret = set_sysfs(path, value)) < 0) {
 		/* fallback to old ioctl */
 		struct ifreq ifr;
 		unsigned long args[4] = { oldcode, value, 0, 0 };
-		
+
 		strncpy(ifr.ifr_name, bridge, IFNAMSIZ);
 		ifr.ifr_data = (char *) &args;
 		ret = ioctl(br_socket_fd, SIOCDEVPRIVATE, &ifr);
@@ -348,14 +361,10 @@ static int port_set(const char *bridge, const char *ifname,
 {
 	int ret;
 	char path[SYSFS_PATH_MAX];
-	FILE *f;
 
 	snprintf(path, SYSFS_PATH_MAX, SYSFS_CLASS_NET "%s/brport/%s", ifname, name);
-	f = fopen(path, "w");
-	if (f) {
-		ret = fprintf(f, "%ld\n", value);
-		fclose(f);
-	} else {
+
+	if ((ret = set_sysfs(path, value)) < 0) {
 		int index = get_portno(bridge, ifname);
 
 		if (index < 0)
-- 
1.7.5.2

