On 64 bit systems, a large value for "long tmp" is truncated when assigning to "int md->max_slave_count" so we still end up with a value less than one despite the "tmp < 1" check. This is more of a problem for static checkers than a real life issue, but it's simple enough to fix. Acked-by: David Fries <david@xxxxxxxxx> Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> --- v2: clarified the commit message diff --git a/drivers/w1/w1.c b/drivers/w1/w1.c index 9eb816b2ea5e..b96f61b15dc6 100644 --- a/drivers/w1/w1.c +++ b/drivers/w1/w1.c @@ -320,10 +320,10 @@ static ssize_t w1_master_attribute_show_timeout(struct device *dev, struct devic static ssize_t w1_master_attribute_store_max_slave_count(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { - long tmp; + int tmp; struct w1_master *md = dev_to_w1_master(dev); - if (kstrtol(buf, 0, &tmp) == -EINVAL || tmp < 1) + if (kstrtoint(buf, 0, &tmp) == -EINVAL || tmp < 1) return -EINVAL; mutex_lock(&md->mutex); -- To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html