Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp875781pxj; Thu, 27 May 2021 13:49:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzkOHXa63Q0c1N7XLN4/JvKci2mvNbQ+QpH9aJL5E/DsIpF2U3Wj2A1QyVGjVC2o5fhupOY X-Received: by 2002:a02:cf32:: with SMTP id s18mr5133873jar.31.1622148566036; Thu, 27 May 2021 13:49:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622148566; cv=none; d=google.com; s=arc-20160816; b=Wwx4kLV+BRK8QrI06CXL3kYoWFfEOAahDwO5B2OTo3d12QhvDhaMERC7Y6pEfC4ere RKfZ69NKTVgNSZ0IOd7Tu0xVaPyE9rk7ufiXaSMNwfTCsKRLXsXdw0mlxnTm2mwO60Hg 5YQHjzIWQ4g/ExpvqfE4EraYXFz5u7Jt0gPfKv7sxkNzcmU4rT+cgG/iSn6lzNoCoSaf 8VwPebACPMoQaOfUrKENbiokK8nYCQbn5E9ss7UAOHmZk2VbcjeKg+94YObHDzekl55V aMiD17Q+ho1qn/1lHH8dkaywSLtOZIy/zJSs6H9/IybwfpGR0gNhYIdakmaUAlpOlqXG WxvQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=E1kLzoD4QWaOKBvqaRbH/49yOZu49bU4UOR/Fm84Thk=; b=icI+g6iG89Z9q7McQ6BlvlGY/pluWfx7EQYC8P6KY+ZOmDP7b6v13b71EP5dkWjTaz ms7RwvChcGdwdfs2w1muhjBp4bBjjPUPLdIq2CpqUg1JVEXsECLXnhaj47HShqyIMaoY 54Yd7nW9K70NXQBvrQmhsLGLmfxxXi3F2ywtv4iBxrsOQzKUPj6icUG8HK8N8DGqDOM1 hGxwYYcloWbK4u/i78+MjrEFc1eQKFRqpqUqnZNYcC1yej5L0et9NamoPPrnGp5neecc vLN5M8q1rsM03c5rdOcq+az1WfrmsZQu8DrPPC3fHUH4/+x0An0psygdA9/TM8wZnOEk MWCw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Bc0u1G0s; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c1si3189336jal.96.2021.05.27.13.49.11; Thu, 27 May 2021 13:49:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Bc0u1G0s; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235493AbhE0MqJ (ORCPT + 99 others); Thu, 27 May 2021 08:46:09 -0400 Received: from mail.kernel.org ([198.145.29.99]:59762 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234699AbhE0MqI (ORCPT ); Thu, 27 May 2021 08:46:08 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id A08EA606A5; Thu, 27 May 2021 12:44:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1622119475; bh=yWXD/JVcL8Eya4d7EJft0H5iYuwpntsDRCo+6p+YUKA=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=Bc0u1G0s1jQsrw6nzv0Gdr7QTgvTZlQsZY1Wa4CxQx1bpVGjfvIZAXS2c6Jp8Dai9 XxEGKNUF3UcsiYPopA2ChS02pUBT5nqDFhSxdAdF8N+cPWy8uEths53ENxStsqkpTs HmeZTWWmPKf1Xpwgb++mFaPZexcdlvupcfKCxMpE= Date: Thu, 27 May 2021 14:44:32 +0200 From: Greg KH To: nizamhaider786@gmail.com Cc: lkundrak@v3.sk, arnd@arndb.de, linux-kernel@vger.kernel.org Subject: Re: [PATCH v3 1/2] char: pcmcia: scr24x_cs: Fix failure handling of device_create() Message-ID: References: <20210524215202.495-1-nizamhaider786@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210524215202.495-1-nizamhaider786@gmail.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, May 25, 2021 at 03:22:01AM +0530, nizamhaider786@gmail.com wrote: > From: Nijam Haider > > Ignored error in device_create() and pcmcia_enable_device() > this patch implements proper error handling. > > Signed-off-by: Nijam Haider > --- > V2 -> V3: Added description, Changelog and removed whitespace error > V1 -> V2: Split the patch into two parts and addressed review comments > --- > drivers/char/pcmcia/scr24x_cs.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/drivers/char/pcmcia/scr24x_cs.c b/drivers/char/pcmcia/scr24x_cs.c > index 47feb39af34c..b48e79356611 100644 > --- a/drivers/char/pcmcia/scr24x_cs.c > +++ b/drivers/char/pcmcia/scr24x_cs.c > @@ -233,6 +233,7 @@ static int scr24x_probe(struct pcmcia_device *link) > { > struct scr24x_dev *dev; > int ret; > + struct device *dev_ret; > > dev = kzalloc(sizeof(*dev), GFP_KERNEL); > if (!dev) > @@ -272,12 +273,20 @@ static int scr24x_probe(struct pcmcia_device *link) > > ret = pcmcia_enable_device(link); > if (ret < 0) { > + cdev_del(&dev->c_dev); > pcmcia_disable_device(link); > goto err; > } > > - device_create(scr24x_class, NULL, MKDEV(MAJOR(scr24x_devt), dev->devno), > + dev_ret = device_create(scr24x_class, NULL, MKDEV(MAJOR(scr24x_devt), dev->devno), > NULL, "scr24x%d", dev->devno); > + if (IS_ERR(dev_ret)) { > + dev_err(&link->dev, "device_create failed for %d\n", > + dev->devno); > + cdev_del(&dev->c_dev); > + pcmcia_disable_device(link); > + goto err; > + } The "better" way to do this is to have more err_: labels that do the unwinding for you, so that you do not have to duplicate the same logic in multiple places, like you are doing here. Can you change this patch to do that instead? Should be shorter overall than this one and easier to maintain over time. thanks, greg k-h