Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp922581pxb; Wed, 6 Apr 2022 04:22:58 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyHmbq/k8nvv38SysMxciP+kxaLwjCyKYKH2dPafg1DGwEgv3NT+t5D/c7sn9WyjE+OUMP2 X-Received: by 2002:a05:6a00:3496:b0:4fa:e48e:3d02 with SMTP id cp22-20020a056a00349600b004fae48e3d02mr8535897pfb.26.1649244178259; Wed, 06 Apr 2022 04:22:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649244178; cv=none; d=google.com; s=arc-20160816; b=peqDnV1Iiwm3sI2nYSPcQzTM5DmAyEnn+YTp/V3a3OeSVYIIDqF7yHC+o+eXkOhBvG 7VS9HRw2wsu73YSWBBQ3QsyWNt7x4iAIGImFMEda1j8iRF6gXEdqIJJktWW7jW2fz7lT JMdOgHfLxgOE+xLeSUXRTODeVjFCSkcj1CE52q1jgAMdeYI9q+hAiKmmuwVnoJ9hdgpC udQmLFW1G4SHsdUnBInv6v5EKENjKrshq8lHpRSuWPJ/T1MbElhUtU+y+fwY6+sA+DEg q0E8/DBx8Jf0o31hcj8QSghshnzAw2PhiW/5BxEYt7Gc9QRgYA7IsilonAPAk8aQRY+p 0Vew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=RIaDm6wZM7geU2JVSF1+Yy4r+ncSP0TWHoKdfyGfyX8=; b=nOHU19pGaEuDLJm/862R7suUObieg53EmloRVQo4vFBwV0f5qhNUEO9MgyYdckE7lQ SS6r62qXbT9bA1aZ5AJNBqma/G+3dipa866jDUYtYmbY/7lN9lroaBWC8jU5BHVWkSs6 7YH9N4VP6q114RzERz6ILPoFPITRZoOaG+e/bN+A3jcKOJOx3ceVYhKCMqmWU/i7+zgn k8AbJVBJIRYftpa0hcbHVyYLr44GX7Cln4fCLcPTIiB5POIjv+dz9G2NUyidnCN1hLCH g2BVCamK1QO5Ffyasm30bBrltl+Q4G4AcrsHJfR2vVs6GYmH8iI3qo7Ilb5o+Ck/8G3U msHg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=cJHXco2K; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 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 lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id 22-20020a630316000000b003816043ee3asi15382272pgd.47.2022.04.06.04.22.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Apr 2022 04:22:58 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=cJHXco2K; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 3D93A5F169C; Wed, 6 Apr 2022 02:45:04 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236963AbiDEV0V (ORCPT + 99 others); Tue, 5 Apr 2022 17:26:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33932 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1352622AbiDEKEs (ORCPT ); Tue, 5 Apr 2022 06:04:48 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9F728BB90C; Tue, 5 Apr 2022 02:53:32 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 7AEA161753; Tue, 5 Apr 2022 09:53:32 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8A63FC385A7; Tue, 5 Apr 2022 09:53:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1649152411; bh=jpH1FFqHwA9Rcvx435BbU8+Ijry2x5lxT/g9E4on9Sg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=cJHXco2KhevIGCYiGI678m2ahclYGaRLGohEF9q+zhFekWNU//6WVn8ATkDpCJjo0 DEniOQOu9Va7+cUOy5516yL0viLhrVIqMU3KulwSUYsSSb0fdKMTYc2faboGOWpyVE hRkeZw3peyCePw0XiS0kpKp7bH1qcPTi6+uCpSrA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Ulf Hansson , Sasha Levin Subject: [PATCH 5.15 767/913] mmc: host: Return an error when ->enable_sdio_irq() ops is missing Date: Tue, 5 Apr 2022 09:30:29 +0200 Message-Id: <20220405070402.823510866@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220405070339.801210740@linuxfoundation.org> References: <20220405070339.801210740@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Ulf Hansson [ Upstream commit d6c9219ca1139b74541b2a98cee47a3426d754a9 ] Even if the current WARN() notifies the user that something is severely wrong, we can still end up in a PANIC() when trying to invoke the missing ->enable_sdio_irq() ops. Therefore, let's also return an error code and prevent the host from being added. While at it, move the code into a separate function to prepare for subsequent changes and for further host caps validations. Signed-off-by: Ulf Hansson Link: https://lore.kernel.org/r/20220303165142.129745-1-ulf.hansson@linaro.org Signed-off-by: Sasha Levin --- drivers/mmc/core/host.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/mmc/core/host.c b/drivers/mmc/core/host.c index cf140f4ec864..d739e2b631fe 100644 --- a/drivers/mmc/core/host.c +++ b/drivers/mmc/core/host.c @@ -588,6 +588,16 @@ struct mmc_host *mmc_alloc_host(int extra, struct device *dev) EXPORT_SYMBOL(mmc_alloc_host); +static int mmc_validate_host_caps(struct mmc_host *host) +{ + if (host->caps & MMC_CAP_SDIO_IRQ && !host->ops->enable_sdio_irq) { + dev_warn(host->parent, "missing ->enable_sdio_irq() ops\n"); + return -EINVAL; + } + + return 0; +} + /** * mmc_add_host - initialise host hardware * @host: mmc host @@ -600,8 +610,9 @@ int mmc_add_host(struct mmc_host *host) { int err; - WARN_ON((host->caps & MMC_CAP_SDIO_IRQ) && - !host->ops->enable_sdio_irq); + err = mmc_validate_host_caps(host); + if (err) + return err; err = device_add(&host->class_dev); if (err) -- 2.34.1