Switch sysfs parsing to something that actually works properly. Signed-off-by: Henrique de Moraes Holschuh <hmh@xxxxxxxxxx> Cc: Ivo van Doorn <IvDoorn@xxxxxxxxx> --- net/rfkill/rfkill.c | 16 ++++++++++++---- 1 files changed, 12 insertions(+), 4 deletions(-) diff --git a/net/rfkill/rfkill.c b/net/rfkill/rfkill.c index 35a9994..2ec6312 100644 --- a/net/rfkill/rfkill.c +++ b/net/rfkill/rfkill.c @@ -352,12 +352,16 @@ static ssize_t rfkill_state_store(struct device *dev, const char *buf, size_t count) { struct rfkill *rfkill = to_rfkill(dev); - unsigned int state = simple_strtoul(buf, NULL, 0); + unsigned long state; int error; if (!capable(CAP_NET_ADMIN)) return -EPERM; + error = strict_strtoul(buf, 0, &state); + if (error) + return error; + /* RFKILL_STATE_HARD_BLOCKED is illegal here... */ if (state != RFKILL_STATE_UNBLOCKED && state != RFKILL_STATE_SOFT_BLOCKED) @@ -385,7 +389,7 @@ static ssize_t rfkill_claim_store(struct device *dev, const char *buf, size_t count) { struct rfkill *rfkill = to_rfkill(dev); - bool claim = !!simple_strtoul(buf, NULL, 0); + unsigned long claim; int error; if (!capable(CAP_NET_ADMIN)) @@ -394,6 +398,10 @@ static ssize_t rfkill_claim_store(struct device *dev, if (rfkill->user_claim_unsupported) return -EOPNOTSUPP; + error = strict_strtoul(buf, 0, &claim); + if (error) + return error; + /* * Take the global lock to make sure the kernel is not in * the middle of rfkill_switch_all @@ -402,7 +410,7 @@ static ssize_t rfkill_claim_store(struct device *dev, if (error) return error; - if (rfkill->user_claim != claim) { + if (!!rfkill->user_claim != !!claim) { if (!claim) { mutex_lock(&rfkill->mutex); rfkill_toggle_radio(rfkill, @@ -410,7 +418,7 @@ static ssize_t rfkill_claim_store(struct device *dev, 0); mutex_unlock(&rfkill->mutex); } - rfkill->user_claim = claim; + rfkill->user_claim = !!claim; } mutex_unlock(&rfkill_mutex); -- 1.5.6.3 -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html