Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp1001348pxb; Fri, 22 Jan 2021 04:58:20 -0800 (PST) X-Google-Smtp-Source: ABdhPJweNNUMikRu5q//ju6OId1OiUm9N8kv+2pQZgnh7yz+/EHrF20lLmZng/gs/6xIdVZF93G8 X-Received: by 2002:a17:906:af15:: with SMTP id lx21mr2839647ejb.6.1611320300732; Fri, 22 Jan 2021 04:58:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1611320300; cv=none; d=google.com; s=arc-20160816; b=lcrmxAahneWoU8uxMkbtPXsmMMsbTTVfnFgFk7xu5V6zM4tYqFUWojfD2OrcgFmefl 3KnLnDACjqi5FUSKCJw/xjzYJ0/Rf55D0IHMYRMTNW7Q3wpUt7sm4wnYEnpK7JBCrixU 74242qBhqTF0WICAcPi4wZ3SlcnSqmTLiGp+6Ba7jCZW9oI1J3SuIZUr1n74VpzS8vY9 /EaFPhoghKQrLsR8r2dxKwN7sydgp2eNpEvCYWe+EGsarWROcVA4za8sAPMzi17LBh5M qHGE7rMbs9vQ3X/JsiLmDIVUylmPu9bfogIyG9lQ8e4GwzCnQr1Xw2CkuIqPdWrqoQXI k9dQ== 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 :message-id:date:subject:cc:to:from; bh=Y8iRtnVIU9Pxil1zG3c2pCGiAptpYvpC612hRMrMcYY=; b=kp+GPNKsL/KBJcqQdrJsBjdErswt5zrITfgZ49hUXIIYU70bN6UwqE5homPLoSg1Vm AbHF05AXprZYLjfKo8cU6xn3LplHpTJZa6IJw/058ofsN3IC+tVlyuTjNIxBWBE8lbip AeaTV06n7Sa4A32EDXwSgyUNHN1vjuAxOW7bZMOkQDErlOJwYMAhk0WOoXg+NUgA52qm aTtQxrOlsCmT0OjG5PzvAn49/qTg870r3rrv6HcgEFTAhcvpzgwE79RlONOvSC32BF8C NbFvvvFR1UFQm2xL/XqHMMs2QY+FIXeSxUS+TibXVzmxqiN2GizBZ8FZGf9gqy5pwM0f 8H5g== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=canonical.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id cy15si3437270edb.10.2021.01.22.04.57.57; Fri, 22 Jan 2021 04:58:20 -0800 (PST) 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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=canonical.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727512AbhAVMyS (ORCPT + 99 others); Fri, 22 Jan 2021 07:54:18 -0500 Received: from youngberry.canonical.com ([91.189.89.112]:41018 "EHLO youngberry.canonical.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726515AbhAVMyI (ORCPT ); Fri, 22 Jan 2021 07:54:08 -0500 Received: from 1.general.khfeng.us.vpn ([10.172.68.174] helo=localhost) by youngberry.canonical.com with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1l2vw8-0005pv-5u; Fri, 22 Jan 2021 12:53:13 +0000 From: Kai-Heng Feng To: rjw@rjwysocki.net Cc: Kai-Heng Feng , AceLan Kao , "Rafael J. Wysocki" , Greg Kroah-Hartman , Andy Shevchenko , Mika Westerberg , Len Brown , linux-acpi@vger.kernel.org (open list:ACPI), linux-kernel@vger.kernel.org (open list) Subject: [PATCH] ACPI / device_sysfs: Prefer "compatible" modalias Date: Fri, 22 Jan 2021 20:53:02 +0800 Message-Id: <20210122125302.991591-1-kai.heng.feng@canonical.com> X-Mailer: git-send-email 2.29.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit 8765c5ba1949 ("ACPI / scan: Rework modalias creation when "compatible" is present") may create two "MODALIAS=" in uevent file if conditions are met. This breaks systemd-udevd, which assumes each "key" in uevent file is unique. The internal implementation of systemd-udevd overwrites the first MODALIAS with the second one, so its kmod rule doesn't load driver for the first MODALIAS. So if both ACPI modalias and OF modalias are present, use the latter one to ensure there's only one MODALIAS. Reference: https://github.com/systemd/systemd/pull/18163 Cc: AceLan Kao Cc: "Rafael J. Wysocki" Cc: Greg Kroah-Hartman Cc: Andy Shevchenko Suggested-by: Mika Westerberg Fixes: 8765c5ba1949 ("ACPI / scan: Rework modalias creation when "compatible" is present") Signed-off-by: Kai-Heng Feng --- drivers/acpi/device_sysfs.c | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/drivers/acpi/device_sysfs.c b/drivers/acpi/device_sysfs.c index 96869f1538b9..bfca116482b8 100644 --- a/drivers/acpi/device_sysfs.c +++ b/drivers/acpi/device_sysfs.c @@ -251,20 +251,12 @@ int __acpi_device_uevent_modalias(struct acpi_device *adev, if (add_uevent_var(env, "MODALIAS=")) return -ENOMEM; - len = create_pnp_modalias(adev, &env->buf[env->buflen - 1], - sizeof(env->buf) - env->buflen); - if (len < 0) - return len; - - env->buflen += len; - if (!adev->data.of_compatible) - return 0; - - if (len > 0 && add_uevent_var(env, "MODALIAS=")) - return -ENOMEM; - - len = create_of_modalias(adev, &env->buf[env->buflen - 1], - sizeof(env->buf) - env->buflen); + if (adev->data.of_compatible) + len = create_of_modalias(adev, &env->buf[env->buflen - 1], + sizeof(env->buf) - env->buflen); + else + len = create_pnp_modalias(adev, &env->buf[env->buflen - 1], + sizeof(env->buf) - env->buflen); if (len < 0) return len; -- 2.29.2