From patchwork Sat Jan 2 10:30:52 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andrew Lunn X-Patchwork-Id: 5228 Return-Path: Received: from londo.lunn.ch (londo.lunn.ch [80.238.139.98]) by open-mesh.net (Postfix) with ESMTP id 8FC0A154130 for ; Sat, 2 Jan 2010 10:50:20 +0000 (UTC) Received: from lunn by londo.lunn.ch with local (Exim 3.36 #1 (Debian)) id 1NR1GP-0006tm-00; Sat, 02 Jan 2010 11:31:17 +0100 From: Andrew Lunn To: gregkh@suse.de Date: Sat, 2 Jan 2010 11:30:52 +0100 Message-Id: <1262428252-26439-17-git-send-email-andrew@lunn.ch> X-Mailer: git-send-email 1.6.5.7 In-Reply-To: <1262428252-26439-16-git-send-email-andrew@lunn.ch> References: <1262428252-26439-1-git-send-email-andrew@lunn.ch> <1262428252-26439-2-git-send-email-andrew@lunn.ch> <1262428252-26439-3-git-send-email-andrew@lunn.ch> <1262428252-26439-4-git-send-email-andrew@lunn.ch> <1262428252-26439-5-git-send-email-andrew@lunn.ch> <1262428252-26439-6-git-send-email-andrew@lunn.ch> <1262428252-26439-7-git-send-email-andrew@lunn.ch> <1262428252-26439-8-git-send-email-andrew@lunn.ch> <1262428252-26439-9-git-send-email-andrew@lunn.ch> <1262428252-26439-10-git-send-email-andrew@lunn.ch> <1262428252-26439-11-git-send-email-andrew@lunn.ch> <1262428252-26439-12-git-send-email-andrew@lunn.ch> <1262428252-26439-13-git-send-email-andrew@lunn.ch> <1262428252-26439-14-git-send-email-andrew@lunn.ch> <1262428252-26439-15-git-send-email-andrew@lunn.ch> <1262428252-26439-16-git-send-email-andrew@lunn.ch> MIME-Version: 1.0 Sender: Andrew Lunn Cc: b.a.t.m.a.n@lists.open-mesh.net Subject: [B.A.T.M.A.N.] [PATCH 17/17] Staging: batman-adv: Dont deactivate aggregation on wrong input X-BeenThere: b.a.t.m.a.n@lists.open-mesh.net X-Mailman-Version: 2.1.11 Precedence: list Reply-To: The list for a Better Approach To Mobile Ad-hoc Networking List-Id: The list for a Better Approach To Mobile Ad-hoc Networking List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jan 2010 10:50:20 -0000 From: Linus Lüssing A non-integer changes the aggregation mode. Therefore this patch changes the behaviour to explicitly check strict_strtoul()'s return code. Signed-off-by: Linus Lüssing Acked-by: Simon Wunderlich Signed-off-by: Andrew Lunn --- drivers/staging/batman-adv/proc.c | 24 ++++++++++++------------ 1 files changed, 12 insertions(+), 12 deletions(-) diff --git a/drivers/staging/batman-adv/proc.c b/drivers/staging/batman-adv/proc.c index 6a7c8bb..2aeee7a 100644 --- a/drivers/staging/batman-adv/proc.c +++ b/drivers/staging/batman-adv/proc.c @@ -427,6 +427,7 @@ static ssize_t proc_aggr_write(struct file *file, const char __user *buffer, char *aggr_string; int not_copied = 0; unsigned long aggregation_enabled_tmp; + int retval; aggr_string = kmalloc(count, GFP_KERNEL); @@ -436,22 +437,21 @@ static ssize_t proc_aggr_write(struct file *file, const char __user *buffer, not_copied = copy_from_user(aggr_string, buffer, count); aggr_string[count - not_copied - 1] = 0; - strict_strtoul(aggr_string, 10, &aggregation_enabled_tmp); + retval = strict_strtoul(aggr_string, 10, &aggregation_enabled_tmp); - if ((aggregation_enabled_tmp != 0) && (aggregation_enabled_tmp != 1)) { + if (retval || aggregation_enabled_tmp > 1) { printk(KERN_ERR "batman-adv:Aggregation can only be enabled (1) or disabled (0), given value: %li\n", aggregation_enabled_tmp); - goto end; + } else { + printk(KERN_INFO "batman-adv:Changing aggregation from: %s (%i) to: %s (%li)\n", + (atomic_read(&aggregation_enabled) == 1 ? + "enabled" : "disabled"), + atomic_read(&aggregation_enabled), + (aggregation_enabled_tmp == 1 ? "enabled" : "disabled"), + aggregation_enabled_tmp); + atomic_set(&aggregation_enabled, + (unsigned)aggregation_enabled_tmp); } - printk(KERN_INFO "batman-adv:Changing aggregation from: %s (%i) to: %s (%li)\n", - (atomic_read(&aggregation_enabled) == 1 ? - "enabled" : "disabled"), - atomic_read(&aggregation_enabled), - (aggregation_enabled_tmp == 1 ? "enabled" : "disabled"), - aggregation_enabled_tmp); - - atomic_set(&aggregation_enabled, (unsigned)aggregation_enabled_tmp); -end: kfree(aggr_string); return count; }