Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753102AbbLGGtW (ORCPT ); Mon, 7 Dec 2015 01:49:22 -0500 Received: from aserp1040.oracle.com ([141.146.126.69]:23283 "EHLO aserp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752792AbbLGGtV (ORCPT ); Mon, 7 Dec 2015 01:49:21 -0500 Date: Mon, 7 Dec 2015 09:48:47 +0300 From: Dan Carpenter To: Saurabh Sengar Cc: w.d.hubbs@gmail.com, chris@the-brannons.com, kirk@reisers.ca, samuel.thibault@ens-lyon.org, gregkh@linuxfoundation.org, speakup@linux-speakup.org, devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] Staging: speakup: kobjects: Return the error type to caller Message-ID: <20151207064847.GA18797@mwanda> References: <1449240153-3927-1-git-send-email-saurabh.truth@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1449240153-3927-1-git-send-email-saurabh.truth@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Source-IP: userv0022.oracle.com [156.151.31.74] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1671 Lines: 46 On Fri, Dec 04, 2015 at 08:12:33PM +0530, Saurabh Sengar wrote: > Inorder to notify the user that value is not successfuly set in sys > entry, error should be returned from store function instead of count > > Signed-off-by: Saurabh Sengar > --- > drivers/staging/speakup/kobjects.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/staging/speakup/kobjects.c b/drivers/staging/speakup/kobjects.c > index fdfeb42..b3a83fb 100644 > --- a/drivers/staging/speakup/kobjects.c > +++ b/drivers/staging/speakup/kobjects.c > @@ -640,7 +640,8 @@ ssize_t spk_var_store(struct kobject *kobj, struct kobj_attribute *attr, > len = E_INC; > else > len = E_SET; > - if (kstrtol(cp, 10, &value) == 0) > + ret = kstrtol(cp, 10, &value); > + if (!ret) > ret = spk_set_num_var(value, param, len); Both kstrtol() and spk_set_num_var() return -ERANGE. The next lines expect that if we got -ERANGE, then it came from spk_set_num_var() so they print a wrong message. > else > pr_warn("overflow or parsing error has occurred"); > @@ -688,6 +689,8 @@ ssize_t spk_var_store(struct kobject *kobj, struct kobj_attribute *attr, > > if (ret == -ERESTART) > pr_info("%s reset to default value\n", param->name); Is this really true? This function is so weird and broken. Please look at it some more and fix it harder with a mallet. regards, dan carpenter -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/