From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.0 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,MSGID_FROM_MTA_HEADER,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9BEEEC433FE for ; Fri, 17 Sep 2021 10:59:19 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 6529061100 for ; Fri, 17 Sep 2021 10:59:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 6529061100 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=oracle.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 794326EC21; Fri, 17 Sep 2021 10:59:18 +0000 (UTC) Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by gabe.freedesktop.org (Postfix) with ESMTPS id F01396EC21; Fri, 17 Sep 2021 10:59:16 +0000 (UTC) Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 18H9bTrZ009091; Fri, 17 Sep 2021 10:59:09 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=date : from : to : cc : subject : message-id : content-type : in-reply-to : mime-version; s=corp-2021-07-09; bh=1RuBMXNf2imQ6m9WFOEHzb5vgvdNWcH9iKCdezXUQSE=; b=wfrE9gwJ0LRqOHAeJFYpxrk/g4dpMmVK9UyEQ+qqiO0aQaPcQwK7C9zCkfACvavttpaJ 6IoRqi4S5bdp5WUZiYHYJ0kRrp6zJCKOo18lJPfkxyLNikckEZCyKb+ix05VAwh+Hm68 0pMzsyCjMLjA7Fqs7988omt39AGzdW9DkyfG99ByOjn5IGnNQIALdg7zVoyE5aedR3lk 462Jpg4t+Av5I0PiGiubxoDusi6Kvz4AvhTMFGL+0lTHoQlELRdBcFlIA7NkFfmHunCh 3QXp/jL0ptG4L9+yh2cOfFWa9KpNGL51p0UNNLB1MuTQ9RmLf4LIzubh8xTh/mqK9aMc Bg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=date : from : to : cc : subject : message-id : content-type : in-reply-to : mime-version; s=corp-2020-01-29; bh=1RuBMXNf2imQ6m9WFOEHzb5vgvdNWcH9iKCdezXUQSE=; b=DaTW2oHZ8ONupMeTxJbngKllBH+rj7hOXeHCfsGVxAB9iohfW25wDc3Ic4xL5AsPthso iSczLhZO7X4+gDEToTdhraiRYoOYJQO9sxrOU2N6XlYEoQummbW8ANgSWFMyMtqkGWpt Rqg9Q83te+czAwoehb2vseIG6oXAbRxw78Mm4MLs2c2ayOBTiNObFYRTVAXnAq3R+7SV z3B1Ytcj5jISQzMU5NvK6LI3/bqo6TLqBcBa5extDYt7Kcx3ktQaeZVkB9vdITLTJ7SS O8s/2DXwcoAFJriqebXz1G2ea6vzJhbyIyWfEvyEWIr6T8HCUYRmoKxLE/mtNxSa4Zc8 tg== Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by mx0b-00069f02.pphosted.com with ESMTP id 3b3s74p46n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 17 Sep 2021 10:59:08 +0000 Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 18HAtkmi137141; Fri, 17 Sep 2021 10:59:07 GMT Received: from nam11-bn8-obe.outbound.protection.outlook.com (mail-bn8nam11lp2171.outbound.protection.outlook.com [104.47.58.171]) by userp3020.oracle.com with ESMTP id 3b167wmy40-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 17 Sep 2021 10:59:07 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DAe0KMdFQQxDrvLUkhKFFbSkYJpeEQmwKTYHPpHzbNNbarWgG6bszPC+NLtQCISjyekslc8yZNSOf8n4cf0wlD5kBljXskz2Bg3T6tquwAk4c8aF2DI6TxZdjQdKGnQuSIP5p5KW9/YmjlA3KXqQK9svgRN9Yz7dGcknoLX4JdwBpdYVy83IYV8qEOANHf/9E9CD4CKG7jsgsj8ZYS6dV6ywbflLn2HsWdzW7sXysIQ9KJNLDrBPsfgva0UvK3ZI5jreT8XDxA7Z3wEgsyY76SeqARaVS66kSEXqUBIAWF1+s4AIUBFcy6Ng7cmYDt+Dwb2+3VQw2FTy1UkAZpXSVA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=1RuBMXNf2imQ6m9WFOEHzb5vgvdNWcH9iKCdezXUQSE=; b=h+VUBIuX7xbOgrTZ5sNGSlwfSNr86O/0Jidaj5WRPlbShuFQRGJZHvJ7y7n6LxhJW+fwfijkoDtugf0Bzka0Qg5grwY8d1qtOhxwRnjiSSJW1VhcNLiVhu70ejVb1Ze6jZ8FyiyEC0v4JCbN+8fZSGUBkzr2NzhLL02B8dLO83AoOhZHB8taI3PwOm+ledr1/X6Q6R/EHZXB4MFDCjzoTaH6sEpHx4LJPRqgUNablJTQiBmld7riGX7RghyEdpzSZNgFzMhFwDSl2lI+XdNygxXfOoImshe6YhxuOXRAUjRtnrtWrbn3g7jT4V4PiuCQgchBU224VdNiEZL3Tx8V8A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1RuBMXNf2imQ6m9WFOEHzb5vgvdNWcH9iKCdezXUQSE=; b=dSIZL92HvmmEqfgqa1QakEj5Muakag9JhUiQQsQZz4QM+uuy1B0OHn3GwxUtCN7Hbg4EHB+H+bRen4CxdPCrSqxnXuArJqYjwWST5JA29uNOv4uAsUAkNQGwy56wO3o+EuZcvoQeGFmdSCYiF1ndP5WCPa8G2CpIT9+jxj5qupQ= Authentication-Results: lists.01.org; dkim=none (message not signed) header.d=none;lists.01.org; dmarc=none action=none header.from=oracle.com; Received: from MWHPR1001MB2365.namprd10.prod.outlook.com (2603:10b6:301:2d::28) by MWHPR10MB1888.namprd10.prod.outlook.com (2603:10b6:300:113::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.16; Fri, 17 Sep 2021 10:59:05 +0000 Received: from MWHPR1001MB2365.namprd10.prod.outlook.com ([fe80::d409:11b5:5eb2:6be9]) by MWHPR1001MB2365.namprd10.prod.outlook.com ([fe80::d409:11b5:5eb2:6be9%5]) with mapi id 15.20.4523.016; Fri, 17 Sep 2021 10:59:05 +0000 Date: Fri, 17 Sep 2021 13:58:45 +0300 From: Dan Carpenter To: kbuild@lists.01.org, Sean Paul , dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, freedreno@lists.freedesktop.org Cc: lkp@intel.com, kbuild-all@lists.01.org, swboyd@chromium.org, Sean Paul , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter Message-ID: <202109170917.5gPBFFFL-lkp@intel.com> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210915203834.1439-5-sean@poorly.run> Message-ID-Hash: DK7X7XUGNON6VZIM5RZK6LMBXD5QCA6X User-Agent: Mutt/1.9.4 (2018-02-28) X-ClientProxiedBy: JNAP275CA0045.ZAFP275.PROD.OUTLOOK.COM (2603:1086:0:4e::22) To MWHPR1001MB2365.namprd10.prod.outlook.com (2603:10b6:301:2d::28) MIME-Version: 1.0 Received: from kadam (62.8.83.99) by JNAP275CA0045.ZAFP275.PROD.OUTLOOK.COM (2603:1086:0:4e::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4457.23 via Frontend Transport; Fri, 17 Sep 2021 10:58:57 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2866ef84-f9e1-45bf-f7bd-08d979ca2a2f X-MS-TrafficTypeDiagnostic: MWHPR10MB1888: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8273; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 0xKu63X4NfDKMh+jNW2a6W3DkQRzyQPY2YQHcDlIE1U7tGOm5nJJoQUo0z2RIzDsALwsSnvzsekLBs17rg6Pt0cprtT3qoRQB0Q90GvnhM25lXYoz1cJ6aWevBHIVSkzXRUphjtuFMH4Quaj5aYYm1oIffUloBPDt2JOZGBiqhwqKXl0BH83JIoe8VJ/nuUWO3/PVlZkzqtF44jIsRAioqKDFSmY00VdhDXytlNy/WVzmi7pwx+xI23jdGfA2W381c31DiTUoB/7OapvDPHzfLouPL46Mv0hv3A8xM55axXn/8tmIhxV0Tf6ZgNIiqijO+gVWP4LBRawMiP2Ie+46DidcPm33fF7G7lnys1s+YPYf3J/jQe4xskL5s0woiiE3gKlDSsI/3nprV6Mt9RBlg9/LqyUu+xVwTGGvOQEdlZ2Yo3QzZC1CLnis1wNlMXZT3uW4HDBI+7AydrDTpcVzqHXq0xd49jrS6hOb/bF9NytDwn5q/ohP7tDpDIbXHiLNQ1YYt51AMu9RzwskQGqUSGb6Z70nx7YAqe4FsBSASMOkJ1rW1nbrRqenHGRUpWgsVindrCg6FOZV+relv1/HFtQ/0bTHMFQCNhShG+b139j1DMkjQa+VOwNEm5nIDUR2dEu37oMT13xzU7N57y0LClqtBVE6adnPgWOFfzQQg/AE532W4h2h6fK+Cg7Oe8NnWuBZx9/iaYY3EXGgp0FMr2nFncD1/W5NjJldVcfVB4XU36bjRoLXrKZ6C/Tkw1ZTxNGVtYXHKE/cojmcQdTGkGQU9hlw2h0KKqV0dRXfD4HJfvu4Ykxp1gAppUBehmH X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MWHPR1001MB2365.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(83380400001)(54906003)(52116002)(44832011)(956004)(8676002)(8936002)(9686003)(1076003)(508600001)(6496006)(6666004)(36756003)(66946007)(26005)(86362001)(966005)(186003)(6486002)(7416002)(4326008)(2906002)(316002)(38100700002)(66556008)(66476007)(5660300002)(38350700002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?F1o5oI9VOg5SLZVz2x4vcUVIvngcfFW/5z5iJSjqqtP4+DOiZ04BH7yKZPzd?= =?us-ascii?Q?57e435xmfaC0o9Ybl5fjuLbKmNNimv1XWo5491dKmJxan0Ic5y9a+wYFEMvj?= =?us-ascii?Q?FHgBs8ruwcWlduPGHwuww+sdrNFFMfqQL4azjGD5/Nt6Yd/d4rzN+nMlxyaE?= =?us-ascii?Q?bGT4NOReCBW7H+eREkRWcAHyUISv0yfv/xc7m4bqvRBdK1o80UKPANbJgIuE?= =?us-ascii?Q?/5L/WIX9ynKa+rxKMBoB5y/n3MdSFm8LBv6pli0q9LZU3w9uU7wgod2BgJfg?= =?us-ascii?Q?1GiojEsYkB5kxRPwQwh1Yv/gTnPYbb0i1yAvOXfXbYrveqIjuFKuh0u6oRKW?= =?us-ascii?Q?zxROb/7aJ54hgNEZSt2Ry/OqdjW0fH3XxUir6DbB8aIu5aMoZRr5V+Ubij6S?= =?us-ascii?Q?yqg3t9GQyTRYl7YfIUamtk1B3pLipWH+EK3cN/egy9CHPuU4usMwqaCyXLJK?= =?us-ascii?Q?cnh//7Upy5WYkCnUBdydN9c+OAI73iO9ZOSJI5VRpnlHK2x4StZ5ftN53hCS?= =?us-ascii?Q?KEPRMI/pGUpiPZBH+kNqr/AaGt3+Yl3znJ/JYkqYDYUfioJgbfqM3LyIBO6w?= =?us-ascii?Q?6tMoU3aNolUs9eAog8o2MZSZcX1VWQ501zR+tJ5CFTE3lxsUho3rBrZ8czVd?= =?us-ascii?Q?p7Rd7ANxUS6xLUMS+i9Tkduif/cP5+dEie9LMy5Co0bVlDe5Lh54SbDdDmnK?= =?us-ascii?Q?mkQF533w1JPYzjTC29jPNHVglZKAFZTwKEd2FTASwwYsMAGOS0DCgRCyR7ej?= =?us-ascii?Q?71E04sxW/Zl1X7+7I+iAHQsPthJfOEepreUUi3e/og66AeMvy9jL7/aTGcjo?= =?us-ascii?Q?KP6eINi5HtbfNhrrIIBX30hw1SJAHFZ/ycbyXzJFF3dU1IBIiTvkHs0KWIp4?= =?us-ascii?Q?LWcIV3xKhSAZ3zJo1RFwkYaPowllIpgBwPW8/FTvGfeTOBlQup+cJB0K50Fy?= =?us-ascii?Q?PAAY86SrLMf6fpVAllz93lIVzU/xi5LPHE8eguSeAfLZdBxmNFSItGFiOU/m?= =?us-ascii?Q?iqrvkQhFK3r9TJ3hYGL/6CISpTQFExDcXoohExurKoFGYlT3M+/fBzi9v+k2?= =?us-ascii?Q?sNj8Uvd/4YfcoiBgPQ3ck/B0whZ9BMITnsuPb4IwfP3SCg2osrnZQIdupssl?= =?us-ascii?Q?ecbtodToNwHqzN+Cj/NU7EOueBzxE+HY+sDmqOz9hPJiUS+NH7XRkSUjd6ax?= =?us-ascii?Q?G616bPD5Re96CeB1hcOl+hoXmIbA+NaZYxKkeJpClzGd4/UgYHQe04M6MEA0?= =?us-ascii?Q?D4lD4Ep/+ZlecyOQtex+wPpM7QcC4wkQe5OTu3OkEvaszADA4BgB8kiHgzOG?= =?us-ascii?Q?lfdwc0jhHfavErZJhpEAreGR?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2866ef84-f9e1-45bf-f7bd-08d979ca2a2f X-MS-Exchange-CrossTenant-AuthSource: MWHPR1001MB2365.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2021 10:59:05.0995 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: klkIAZDZu02GlhP/M1dKzu0eQ/M5hgM1uKcxBzLHDiqMBJZ7dmoR+/4Px+s6HAl2lxnj6WPUP6GYNxQyLj80eUcGMeNxgl2ejfpQuLBZpgc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR10MB1888 X-Proofpoint-Virus-Version: vendor=nai engine=6300 definitions=10109 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 suspectscore=0 phishscore=0 mlxlogscore=999 malwarescore=0 mlxscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2109030001 definitions=main-2109170071 X-Proofpoint-ORIG-GUID: OZAKuFCE0iwqLFlNnO1BLWuWJDQOa7wn X-Proofpoint-GUID: OZAKuFCE0iwqLFlNnO1BLWuWJDQOa7wn Subject: [Intel-gfx] [kbuild] Re: [PATCH v2 04/13] drm/hdcp: Expand HDCP helper library for enable/disable/check X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Hi Sean, url: https://github.com/0day-ci/linux/commits/Sean-Paul/drm-hdcp-Pull-HDCP-auth-exchange-check-into-helpers/20210916-044145 base: git://anongit.freedesktop.org/drm-intel for-linux-next config: x86_64-randconfig-m001-20210916 (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter New smatch warnings: drivers/gpu/drm/drm_hdcp.c:1208 drm_hdcp_helper_enable_hdcp() error: uninitialized symbol 'check_link_interval'. Old smatch warnings: drivers/gpu/drm/drm_hdcp.c:514 drm_hdcp_atomic_check() warn: inconsistent indenting vim +/check_link_interval +1208 drivers/gpu/drm/drm_hdcp.c cbc5065be3a652f Sean Paul 2021-09-15 1127 static int drm_hdcp_helper_enable_hdcp(struct drm_hdcp_helper_data *data, cbc5065be3a652f Sean Paul 2021-09-15 1128 struct drm_atomic_state *state, cbc5065be3a652f Sean Paul 2021-09-15 1129 struct mutex *driver_mutex) cbc5065be3a652f Sean Paul 2021-09-15 1130 { cbc5065be3a652f Sean Paul 2021-09-15 1131 struct drm_connector *connector = data->connector; cbc5065be3a652f Sean Paul 2021-09-15 1132 struct drm_connector_state *conn_state; cbc5065be3a652f Sean Paul 2021-09-15 1133 struct drm_device *dev = connector->dev; cbc5065be3a652f Sean Paul 2021-09-15 1134 unsigned long check_link_interval; ^^^^^^^^^^^^^^^^^^^ cbc5065be3a652f Sean Paul 2021-09-15 1135 bool capable; cbc5065be3a652f Sean Paul 2021-09-15 1136 int ret = 0; cbc5065be3a652f Sean Paul 2021-09-15 1137 cbc5065be3a652f Sean Paul 2021-09-15 1138 conn_state = drm_atomic_get_new_connector_state(state, connector); cbc5065be3a652f Sean Paul 2021-09-15 1139 cbc5065be3a652f Sean Paul 2021-09-15 1140 mutex_lock(&data->mutex); cbc5065be3a652f Sean Paul 2021-09-15 1141 cbc5065be3a652f Sean Paul 2021-09-15 1142 if (data->value == DRM_MODE_CONTENT_PROTECTION_ENABLED) { cbc5065be3a652f Sean Paul 2021-09-15 1143 drm_hdcp_update_value(data, DRM_MODE_CONTENT_PROTECTION_ENABLED, cbc5065be3a652f Sean Paul 2021-09-15 1144 true); cbc5065be3a652f Sean Paul 2021-09-15 1145 goto out_data_mutex; cbc5065be3a652f Sean Paul 2021-09-15 1146 } cbc5065be3a652f Sean Paul 2021-09-15 1147 cbc5065be3a652f Sean Paul 2021-09-15 1148 drm_WARN_ON(dev, data->driver_mutex != NULL); cbc5065be3a652f Sean Paul 2021-09-15 1149 data->driver_mutex = driver_mutex; cbc5065be3a652f Sean Paul 2021-09-15 1150 cbc5065be3a652f Sean Paul 2021-09-15 1151 drm_hdcp_helper_driver_lock(data); cbc5065be3a652f Sean Paul 2021-09-15 1152 cbc5065be3a652f Sean Paul 2021-09-15 1153 if (data->funcs->setup) { cbc5065be3a652f Sean Paul 2021-09-15 1154 ret = data->funcs->setup(connector, state); cbc5065be3a652f Sean Paul 2021-09-15 1155 if (ret) { cbc5065be3a652f Sean Paul 2021-09-15 1156 drm_err(dev, "Failed to setup HDCP %d\n", ret); cbc5065be3a652f Sean Paul 2021-09-15 1157 goto out; cbc5065be3a652f Sean Paul 2021-09-15 1158 } cbc5065be3a652f Sean Paul 2021-09-15 1159 } cbc5065be3a652f Sean Paul 2021-09-15 1160 cbc5065be3a652f Sean Paul 2021-09-15 1161 if (!data->funcs->are_keys_valid || cbc5065be3a652f Sean Paul 2021-09-15 1162 !data->funcs->are_keys_valid(connector)) { cbc5065be3a652f Sean Paul 2021-09-15 1163 if (data->funcs->load_keys) { cbc5065be3a652f Sean Paul 2021-09-15 1164 ret = data->funcs->load_keys(connector); cbc5065be3a652f Sean Paul 2021-09-15 1165 if (ret) { cbc5065be3a652f Sean Paul 2021-09-15 1166 drm_err(dev, "Failed to load HDCP keys %d\n", ret); cbc5065be3a652f Sean Paul 2021-09-15 1167 goto out; cbc5065be3a652f Sean Paul 2021-09-15 1168 } cbc5065be3a652f Sean Paul 2021-09-15 1169 } cbc5065be3a652f Sean Paul 2021-09-15 1170 } cbc5065be3a652f Sean Paul 2021-09-15 1171 cbc5065be3a652f Sean Paul 2021-09-15 1172 /* cbc5065be3a652f Sean Paul 2021-09-15 1173 * Considering that HDCP2.2 is more secure than HDCP1.4, If the setup cbc5065be3a652f Sean Paul 2021-09-15 1174 * is capable of HDCP2.2, it is preferred to use HDCP2.2. cbc5065be3a652f Sean Paul 2021-09-15 1175 */ cbc5065be3a652f Sean Paul 2021-09-15 1176 ret = data->funcs->hdcp2_capable(connector, &capable); cbc5065be3a652f Sean Paul 2021-09-15 1177 if (ret) { cbc5065be3a652f Sean Paul 2021-09-15 1178 drm_err(dev, "HDCP 2.x capability check failed %d\n", ret); cbc5065be3a652f Sean Paul 2021-09-15 1179 goto out; cbc5065be3a652f Sean Paul 2021-09-15 1180 } cbc5065be3a652f Sean Paul 2021-09-15 1181 if (capable) { cbc5065be3a652f Sean Paul 2021-09-15 1182 data->enabled_type = DRM_MODE_HDCP_CONTENT_TYPE1; cbc5065be3a652f Sean Paul 2021-09-15 1183 ret = data->funcs->hdcp2_enable(connector); cbc5065be3a652f Sean Paul 2021-09-15 1184 if (!ret) { cbc5065be3a652f Sean Paul 2021-09-15 1185 check_link_interval = DRM_HDCP2_CHECK_PERIOD_MS; cbc5065be3a652f Sean Paul 2021-09-15 1186 goto out; cbc5065be3a652f Sean Paul 2021-09-15 1187 } cbc5065be3a652f Sean Paul 2021-09-15 1188 } cbc5065be3a652f Sean Paul 2021-09-15 1189 cbc5065be3a652f Sean Paul 2021-09-15 1190 /* cbc5065be3a652f Sean Paul 2021-09-15 1191 * When HDCP2.2 fails and Content Type is not Type1, HDCP1.4 will cbc5065be3a652f Sean Paul 2021-09-15 1192 * be attempted. cbc5065be3a652f Sean Paul 2021-09-15 1193 */ cbc5065be3a652f Sean Paul 2021-09-15 1194 ret = drm_hdcp_helper_hdcp1_capable(data, &capable); cbc5065be3a652f Sean Paul 2021-09-15 1195 if (ret) { cbc5065be3a652f Sean Paul 2021-09-15 1196 drm_err(dev, "HDCP 1.x capability check failed %d\n", ret); cbc5065be3a652f Sean Paul 2021-09-15 1197 goto out; cbc5065be3a652f Sean Paul 2021-09-15 1198 } cbc5065be3a652f Sean Paul 2021-09-15 1199 if (capable && conn_state->content_type != DRM_MODE_HDCP_CONTENT_TYPE1) { cbc5065be3a652f Sean Paul 2021-09-15 1200 data->enabled_type = DRM_MODE_HDCP_CONTENT_TYPE0; cbc5065be3a652f Sean Paul 2021-09-15 1201 ret = drm_hdcp_helper_hdcp1_enable(data); cbc5065be3a652f Sean Paul 2021-09-15 1202 if (!ret) cbc5065be3a652f Sean Paul 2021-09-15 1203 check_link_interval = DRM_HDCP_CHECK_PERIOD_MS; cbc5065be3a652f Sean Paul 2021-09-15 1204 } "ret = 0" and "check_link_interval" is unitialized on else path. cbc5065be3a652f Sean Paul 2021-09-15 1205 cbc5065be3a652f Sean Paul 2021-09-15 1206 out: cbc5065be3a652f Sean Paul 2021-09-15 1207 if (!ret) { cbc5065be3a652f Sean Paul 2021-09-15 @1208 schedule_delayed_work(&data->check_work, check_link_interval); ^^^^^^^^^^^^^^^^^^^ cbc5065be3a652f Sean Paul 2021-09-15 1209 drm_hdcp_update_value(data, DRM_MODE_CONTENT_PROTECTION_ENABLED, cbc5065be3a652f Sean Paul 2021-09-15 1210 true); cbc5065be3a652f Sean Paul 2021-09-15 1211 } cbc5065be3a652f Sean Paul 2021-09-15 1212 cbc5065be3a652f Sean Paul 2021-09-15 1213 drm_hdcp_helper_driver_unlock(data); cbc5065be3a652f Sean Paul 2021-09-15 1214 if (ret) cbc5065be3a652f Sean Paul 2021-09-15 1215 data->driver_mutex = NULL; cbc5065be3a652f Sean Paul 2021-09-15 1216 cbc5065be3a652f Sean Paul 2021-09-15 1217 out_data_mutex: cbc5065be3a652f Sean Paul 2021-09-15 1218 mutex_unlock(&data->mutex); cbc5065be3a652f Sean Paul 2021-09-15 1219 return ret; cbc5065be3a652f Sean Paul 2021-09-15 1220 } --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org _______________________________________________ kbuild mailing list -- kbuild@lists.01.org To unsubscribe send an email to kbuild-leave@lists.01.org From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============4920475198862552585==" MIME-Version: 1.0 From: kernel test robot Subject: Re: [PATCH v2 04/13] drm/hdcp: Expand HDCP helper library for enable/disable/check Date: Fri, 17 Sep 2021 09:29:51 +0800 Message-ID: <202109170917.5gPBFFFL-lkp@intel.com> List-Id: To: kbuild@lists.01.org --===============4920475198862552585== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable CC: kbuild-all(a)lists.01.org In-Reply-To: <20210915203834.1439-5-sean@poorly.run> References: <20210915203834.1439-5-sean@poorly.run> TO: Sean Paul TO: dri-devel(a)lists.freedesktop.org TO: intel-gfx(a)lists.freedesktop.org TO: freedreno(a)lists.freedesktop.org CC: swboyd(a)chromium.org CC: Sean Paul CC: Maarten Lankhorst CC: Maxime Ripard CC: Thomas Zimmermann CC: David Airlie CC: Daniel Vetter Hi Sean, I love your patch! Perhaps something to improve: [auto build test WARNING on drm-intel/for-linux-next] [also build test WARNING on drm-tip/drm-tip robh/for-next linus/master v5.1= 5-rc1 next-20210916] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Sean-Paul/drm-hdcp-Pull-HD= CP-auth-exchange-check-into-helpers/20210916-044145 base: git://anongit.freedesktop.org/drm-intel for-linux-next :::::: branch date: 29 hours ago :::::: commit date: 29 hours ago config: x86_64-randconfig-m001-20210916 (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter New smatch warnings: drivers/gpu/drm/drm_hdcp.c:1208 drm_hdcp_helper_enable_hdcp() error: uninit= ialized symbol 'check_link_interval'. Old smatch warnings: drivers/gpu/drm/drm_hdcp.c:514 drm_hdcp_atomic_check() warn: inconsistent i= ndenting vim +/check_link_interval +1208 drivers/gpu/drm/drm_hdcp.c cbc5065be3a652f Sean Paul 2021-09-15 1126 = cbc5065be3a652f Sean Paul 2021-09-15 1127 static int drm_hdcp_helper_enab= le_hdcp(struct drm_hdcp_helper_data *data, cbc5065be3a652f Sean Paul 2021-09-15 1128 struct drm_atomic_st= ate *state, cbc5065be3a652f Sean Paul 2021-09-15 1129 struct mutex *driver= _mutex) cbc5065be3a652f Sean Paul 2021-09-15 1130 { cbc5065be3a652f Sean Paul 2021-09-15 1131 struct drm_connector *connecto= r =3D data->connector; cbc5065be3a652f Sean Paul 2021-09-15 1132 struct drm_connector_state *co= nn_state; cbc5065be3a652f Sean Paul 2021-09-15 1133 struct drm_device *dev =3D con= nector->dev; cbc5065be3a652f Sean Paul 2021-09-15 1134 unsigned long check_link_inter= val; cbc5065be3a652f Sean Paul 2021-09-15 1135 bool capable; cbc5065be3a652f Sean Paul 2021-09-15 1136 int ret =3D 0; cbc5065be3a652f Sean Paul 2021-09-15 1137 = cbc5065be3a652f Sean Paul 2021-09-15 1138 conn_state =3D drm_atomic_get_= new_connector_state(state, connector); cbc5065be3a652f Sean Paul 2021-09-15 1139 = cbc5065be3a652f Sean Paul 2021-09-15 1140 mutex_lock(&data->mutex); cbc5065be3a652f Sean Paul 2021-09-15 1141 = cbc5065be3a652f Sean Paul 2021-09-15 1142 if (data->value =3D=3D DRM_MOD= E_CONTENT_PROTECTION_ENABLED) { cbc5065be3a652f Sean Paul 2021-09-15 1143 drm_hdcp_update_value(data, D= RM_MODE_CONTENT_PROTECTION_ENABLED, cbc5065be3a652f Sean Paul 2021-09-15 1144 true); cbc5065be3a652f Sean Paul 2021-09-15 1145 goto out_data_mutex; cbc5065be3a652f Sean Paul 2021-09-15 1146 } cbc5065be3a652f Sean Paul 2021-09-15 1147 = cbc5065be3a652f Sean Paul 2021-09-15 1148 drm_WARN_ON(dev, data->driver_= mutex !=3D NULL); cbc5065be3a652f Sean Paul 2021-09-15 1149 data->driver_mutex =3D driver_= mutex; cbc5065be3a652f Sean Paul 2021-09-15 1150 = cbc5065be3a652f Sean Paul 2021-09-15 1151 drm_hdcp_helper_driver_lock(da= ta); cbc5065be3a652f Sean Paul 2021-09-15 1152 = cbc5065be3a652f Sean Paul 2021-09-15 1153 if (data->funcs->setup) { cbc5065be3a652f Sean Paul 2021-09-15 1154 ret =3D data->funcs->setup(co= nnector, state); cbc5065be3a652f Sean Paul 2021-09-15 1155 if (ret) { cbc5065be3a652f Sean Paul 2021-09-15 1156 drm_err(dev, "Failed to setu= p HDCP %d\n", ret); cbc5065be3a652f Sean Paul 2021-09-15 1157 goto out; cbc5065be3a652f Sean Paul 2021-09-15 1158 } cbc5065be3a652f Sean Paul 2021-09-15 1159 } cbc5065be3a652f Sean Paul 2021-09-15 1160 = cbc5065be3a652f Sean Paul 2021-09-15 1161 if (!data->funcs->are_keys_val= id || cbc5065be3a652f Sean Paul 2021-09-15 1162 !data->funcs->are_keys_val= id(connector)) { cbc5065be3a652f Sean Paul 2021-09-15 1163 if (data->funcs->load_keys) { cbc5065be3a652f Sean Paul 2021-09-15 1164 ret =3D data->funcs->load_ke= ys(connector); cbc5065be3a652f Sean Paul 2021-09-15 1165 if (ret) { cbc5065be3a652f Sean Paul 2021-09-15 1166 drm_err(dev, "Failed to loa= d HDCP keys %d\n", ret); cbc5065be3a652f Sean Paul 2021-09-15 1167 goto out; cbc5065be3a652f Sean Paul 2021-09-15 1168 } cbc5065be3a652f Sean Paul 2021-09-15 1169 } cbc5065be3a652f Sean Paul 2021-09-15 1170 } cbc5065be3a652f Sean Paul 2021-09-15 1171 = cbc5065be3a652f Sean Paul 2021-09-15 1172 /* cbc5065be3a652f Sean Paul 2021-09-15 1173 * Considering that HDCP2.2 is= more secure than HDCP1.4, If the setup cbc5065be3a652f Sean Paul 2021-09-15 1174 * is capable of HDCP2.2, it i= s preferred to use HDCP2.2. cbc5065be3a652f Sean Paul 2021-09-15 1175 */ cbc5065be3a652f Sean Paul 2021-09-15 1176 ret =3D data->funcs->hdcp2_cap= able(connector, &capable); cbc5065be3a652f Sean Paul 2021-09-15 1177 if (ret) { cbc5065be3a652f Sean Paul 2021-09-15 1178 drm_err(dev, "HDCP 2.x capabi= lity check failed %d\n", ret); cbc5065be3a652f Sean Paul 2021-09-15 1179 goto out; cbc5065be3a652f Sean Paul 2021-09-15 1180 } cbc5065be3a652f Sean Paul 2021-09-15 1181 if (capable) { cbc5065be3a652f Sean Paul 2021-09-15 1182 data->enabled_type =3D DRM_MO= DE_HDCP_CONTENT_TYPE1; cbc5065be3a652f Sean Paul 2021-09-15 1183 ret =3D data->funcs->hdcp2_en= able(connector); cbc5065be3a652f Sean Paul 2021-09-15 1184 if (!ret) { cbc5065be3a652f Sean Paul 2021-09-15 1185 check_link_interval =3D DRM_= HDCP2_CHECK_PERIOD_MS; cbc5065be3a652f Sean Paul 2021-09-15 1186 goto out; cbc5065be3a652f Sean Paul 2021-09-15 1187 } cbc5065be3a652f Sean Paul 2021-09-15 1188 } cbc5065be3a652f Sean Paul 2021-09-15 1189 = cbc5065be3a652f Sean Paul 2021-09-15 1190 /* cbc5065be3a652f Sean Paul 2021-09-15 1191 * When HDCP2.2 fails and Cont= ent Type is not Type1, HDCP1.4 will cbc5065be3a652f Sean Paul 2021-09-15 1192 * be attempted. cbc5065be3a652f Sean Paul 2021-09-15 1193 */ cbc5065be3a652f Sean Paul 2021-09-15 1194 ret =3D drm_hdcp_helper_hdcp1_= capable(data, &capable); cbc5065be3a652f Sean Paul 2021-09-15 1195 if (ret) { cbc5065be3a652f Sean Paul 2021-09-15 1196 drm_err(dev, "HDCP 1.x capabi= lity check failed %d\n", ret); cbc5065be3a652f Sean Paul 2021-09-15 1197 goto out; cbc5065be3a652f Sean Paul 2021-09-15 1198 } cbc5065be3a652f Sean Paul 2021-09-15 1199 if (capable && conn_state->con= tent_type !=3D DRM_MODE_HDCP_CONTENT_TYPE1) { cbc5065be3a652f Sean Paul 2021-09-15 1200 data->enabled_type =3D DRM_MO= DE_HDCP_CONTENT_TYPE0; cbc5065be3a652f Sean Paul 2021-09-15 1201 ret =3D drm_hdcp_helper_hdcp1= _enable(data); cbc5065be3a652f Sean Paul 2021-09-15 1202 if (!ret) cbc5065be3a652f Sean Paul 2021-09-15 1203 check_link_interval =3D DRM_= HDCP_CHECK_PERIOD_MS; cbc5065be3a652f Sean Paul 2021-09-15 1204 } cbc5065be3a652f Sean Paul 2021-09-15 1205 = cbc5065be3a652f Sean Paul 2021-09-15 1206 out: cbc5065be3a652f Sean Paul 2021-09-15 1207 if (!ret) { cbc5065be3a652f Sean Paul 2021-09-15 @1208 schedule_delayed_work(&data->= check_work, check_link_interval); cbc5065be3a652f Sean Paul 2021-09-15 1209 drm_hdcp_update_value(data, D= RM_MODE_CONTENT_PROTECTION_ENABLED, cbc5065be3a652f Sean Paul 2021-09-15 1210 true); cbc5065be3a652f Sean Paul 2021-09-15 1211 } cbc5065be3a652f Sean Paul 2021-09-15 1212 = cbc5065be3a652f Sean Paul 2021-09-15 1213 drm_hdcp_helper_driver_unlock(= data); cbc5065be3a652f Sean Paul 2021-09-15 1214 if (ret) cbc5065be3a652f Sean Paul 2021-09-15 1215 data->driver_mutex =3D NULL; cbc5065be3a652f Sean Paul 2021-09-15 1216 = cbc5065be3a652f Sean Paul 2021-09-15 1217 out_data_mutex: cbc5065be3a652f Sean Paul 2021-09-15 1218 mutex_unlock(&data->mutex); cbc5065be3a652f Sean Paul 2021-09-15 1219 return ret; cbc5065be3a652f Sean Paul 2021-09-15 1220 } cbc5065be3a652f Sean Paul 2021-09-15 1221 = --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============4920475198862552585== Content-Type: application/gzip MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="config.gz" 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 HPBA+7OODW4AN09IXpS3uhz/H5lUPCNlLwIA --===============4920475198862552585==-- From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.2 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,MSGID_FROM_MTA_HEADER,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 205C6C433EF for ; Fri, 17 Sep 2021 10:59:22 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D9AE961152 for ; Fri, 17 Sep 2021 10:59:21 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org D9AE961152 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=oracle.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 85CA06EC22; Fri, 17 Sep 2021 10:59:18 +0000 (UTC) Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by gabe.freedesktop.org (Postfix) with ESMTPS id F01396EC21; Fri, 17 Sep 2021 10:59:16 +0000 (UTC) Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 18H9bTrZ009091; Fri, 17 Sep 2021 10:59:09 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=date : from : to : cc : subject : message-id : content-type : in-reply-to : mime-version; s=corp-2021-07-09; bh=1RuBMXNf2imQ6m9WFOEHzb5vgvdNWcH9iKCdezXUQSE=; b=wfrE9gwJ0LRqOHAeJFYpxrk/g4dpMmVK9UyEQ+qqiO0aQaPcQwK7C9zCkfACvavttpaJ 6IoRqi4S5bdp5WUZiYHYJ0kRrp6zJCKOo18lJPfkxyLNikckEZCyKb+ix05VAwh+Hm68 0pMzsyCjMLjA7Fqs7988omt39AGzdW9DkyfG99ByOjn5IGnNQIALdg7zVoyE5aedR3lk 462Jpg4t+Av5I0PiGiubxoDusi6Kvz4AvhTMFGL+0lTHoQlELRdBcFlIA7NkFfmHunCh 3QXp/jL0ptG4L9+yh2cOfFWa9KpNGL51p0UNNLB1MuTQ9RmLf4LIzubh8xTh/mqK9aMc Bg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=date : from : to : cc : subject : message-id : content-type : in-reply-to : mime-version; s=corp-2020-01-29; bh=1RuBMXNf2imQ6m9WFOEHzb5vgvdNWcH9iKCdezXUQSE=; b=DaTW2oHZ8ONupMeTxJbngKllBH+rj7hOXeHCfsGVxAB9iohfW25wDc3Ic4xL5AsPthso iSczLhZO7X4+gDEToTdhraiRYoOYJQO9sxrOU2N6XlYEoQummbW8ANgSWFMyMtqkGWpt Rqg9Q83te+czAwoehb2vseIG6oXAbRxw78Mm4MLs2c2ayOBTiNObFYRTVAXnAq3R+7SV z3B1Ytcj5jISQzMU5NvK6LI3/bqo6TLqBcBa5extDYt7Kcx3ktQaeZVkB9vdITLTJ7SS O8s/2DXwcoAFJriqebXz1G2ea6vzJhbyIyWfEvyEWIr6T8HCUYRmoKxLE/mtNxSa4Zc8 tg== Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by mx0b-00069f02.pphosted.com with ESMTP id 3b3s74p46n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 17 Sep 2021 10:59:08 +0000 Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 18HAtkmi137141; Fri, 17 Sep 2021 10:59:07 GMT Received: from nam11-bn8-obe.outbound.protection.outlook.com (mail-bn8nam11lp2171.outbound.protection.outlook.com [104.47.58.171]) by userp3020.oracle.com with ESMTP id 3b167wmy40-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 17 Sep 2021 10:59:07 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DAe0KMdFQQxDrvLUkhKFFbSkYJpeEQmwKTYHPpHzbNNbarWgG6bszPC+NLtQCISjyekslc8yZNSOf8n4cf0wlD5kBljXskz2Bg3T6tquwAk4c8aF2DI6TxZdjQdKGnQuSIP5p5KW9/YmjlA3KXqQK9svgRN9Yz7dGcknoLX4JdwBpdYVy83IYV8qEOANHf/9E9CD4CKG7jsgsj8ZYS6dV6ywbflLn2HsWdzW7sXysIQ9KJNLDrBPsfgva0UvK3ZI5jreT8XDxA7Z3wEgsyY76SeqARaVS66kSEXqUBIAWF1+s4AIUBFcy6Ng7cmYDt+Dwb2+3VQw2FTy1UkAZpXSVA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=1RuBMXNf2imQ6m9WFOEHzb5vgvdNWcH9iKCdezXUQSE=; b=h+VUBIuX7xbOgrTZ5sNGSlwfSNr86O/0Jidaj5WRPlbShuFQRGJZHvJ7y7n6LxhJW+fwfijkoDtugf0Bzka0Qg5grwY8d1qtOhxwRnjiSSJW1VhcNLiVhu70ejVb1Ze6jZ8FyiyEC0v4JCbN+8fZSGUBkzr2NzhLL02B8dLO83AoOhZHB8taI3PwOm+ledr1/X6Q6R/EHZXB4MFDCjzoTaH6sEpHx4LJPRqgUNablJTQiBmld7riGX7RghyEdpzSZNgFzMhFwDSl2lI+XdNygxXfOoImshe6YhxuOXRAUjRtnrtWrbn3g7jT4V4PiuCQgchBU224VdNiEZL3Tx8V8A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1RuBMXNf2imQ6m9WFOEHzb5vgvdNWcH9iKCdezXUQSE=; b=dSIZL92HvmmEqfgqa1QakEj5Muakag9JhUiQQsQZz4QM+uuy1B0OHn3GwxUtCN7Hbg4EHB+H+bRen4CxdPCrSqxnXuArJqYjwWST5JA29uNOv4uAsUAkNQGwy56wO3o+EuZcvoQeGFmdSCYiF1ndP5WCPa8G2CpIT9+jxj5qupQ= Authentication-Results: lists.01.org; dkim=none (message not signed) header.d=none;lists.01.org; dmarc=none action=none header.from=oracle.com; Received: from MWHPR1001MB2365.namprd10.prod.outlook.com (2603:10b6:301:2d::28) by MWHPR10MB1888.namprd10.prod.outlook.com (2603:10b6:300:113::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.16; Fri, 17 Sep 2021 10:59:05 +0000 Received: from MWHPR1001MB2365.namprd10.prod.outlook.com ([fe80::d409:11b5:5eb2:6be9]) by MWHPR1001MB2365.namprd10.prod.outlook.com ([fe80::d409:11b5:5eb2:6be9%5]) with mapi id 15.20.4523.016; Fri, 17 Sep 2021 10:59:05 +0000 Date: Fri, 17 Sep 2021 13:58:45 +0300 From: Dan Carpenter To: kbuild@lists.01.org, Sean Paul , dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, freedreno@lists.freedesktop.org Cc: lkp@intel.com, kbuild-all@lists.01.org, swboyd@chromium.org, Sean Paul , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter Subject: [kbuild] Re: [PATCH v2 04/13] drm/hdcp: Expand HDCP helper library for enable/disable/check Message-ID: <202109170917.5gPBFFFL-lkp@intel.com> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210915203834.1439-5-sean@poorly.run> Message-ID-Hash: DK7X7XUGNON6VZIM5RZK6LMBXD5QCA6X User-Agent: Mutt/1.9.4 (2018-02-28) X-ClientProxiedBy: JNAP275CA0045.ZAFP275.PROD.OUTLOOK.COM (2603:1086:0:4e::22) To MWHPR1001MB2365.namprd10.prod.outlook.com (2603:10b6:301:2d::28) MIME-Version: 1.0 Received: from kadam (62.8.83.99) by JNAP275CA0045.ZAFP275.PROD.OUTLOOK.COM (2603:1086:0:4e::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4457.23 via Frontend Transport; Fri, 17 Sep 2021 10:58:57 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2866ef84-f9e1-45bf-f7bd-08d979ca2a2f X-MS-TrafficTypeDiagnostic: MWHPR10MB1888: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8273; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 0xKu63X4NfDKMh+jNW2a6W3DkQRzyQPY2YQHcDlIE1U7tGOm5nJJoQUo0z2RIzDsALwsSnvzsekLBs17rg6Pt0cprtT3qoRQB0Q90GvnhM25lXYoz1cJ6aWevBHIVSkzXRUphjtuFMH4Quaj5aYYm1oIffUloBPDt2JOZGBiqhwqKXl0BH83JIoe8VJ/nuUWO3/PVlZkzqtF44jIsRAioqKDFSmY00VdhDXytlNy/WVzmi7pwx+xI23jdGfA2W381c31DiTUoB/7OapvDPHzfLouPL46Mv0hv3A8xM55axXn/8tmIhxV0Tf6ZgNIiqijO+gVWP4LBRawMiP2Ie+46DidcPm33fF7G7lnys1s+YPYf3J/jQe4xskL5s0woiiE3gKlDSsI/3nprV6Mt9RBlg9/LqyUu+xVwTGGvOQEdlZ2Yo3QzZC1CLnis1wNlMXZT3uW4HDBI+7AydrDTpcVzqHXq0xd49jrS6hOb/bF9NytDwn5q/ohP7tDpDIbXHiLNQ1YYt51AMu9RzwskQGqUSGb6Z70nx7YAqe4FsBSASMOkJ1rW1nbrRqenHGRUpWgsVindrCg6FOZV+relv1/HFtQ/0bTHMFQCNhShG+b139j1DMkjQa+VOwNEm5nIDUR2dEu37oMT13xzU7N57y0LClqtBVE6adnPgWOFfzQQg/AE532W4h2h6fK+Cg7Oe8NnWuBZx9/iaYY3EXGgp0FMr2nFncD1/W5NjJldVcfVB4XU36bjRoLXrKZ6C/Tkw1ZTxNGVtYXHKE/cojmcQdTGkGQU9hlw2h0KKqV0dRXfD4HJfvu4Ykxp1gAppUBehmH X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MWHPR1001MB2365.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(83380400001)(54906003)(52116002)(44832011)(956004)(8676002)(8936002)(9686003)(1076003)(508600001)(6496006)(6666004)(36756003)(66946007)(26005)(86362001)(966005)(186003)(6486002)(7416002)(4326008)(2906002)(316002)(38100700002)(66556008)(66476007)(5660300002)(38350700002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?F1o5oI9VOg5SLZVz2x4vcUVIvngcfFW/5z5iJSjqqtP4+DOiZ04BH7yKZPzd?= =?us-ascii?Q?57e435xmfaC0o9Ybl5fjuLbKmNNimv1XWo5491dKmJxan0Ic5y9a+wYFEMvj?= =?us-ascii?Q?FHgBs8ruwcWlduPGHwuww+sdrNFFMfqQL4azjGD5/Nt6Yd/d4rzN+nMlxyaE?= =?us-ascii?Q?bGT4NOReCBW7H+eREkRWcAHyUISv0yfv/xc7m4bqvRBdK1o80UKPANbJgIuE?= =?us-ascii?Q?/5L/WIX9ynKa+rxKMBoB5y/n3MdSFm8LBv6pli0q9LZU3w9uU7wgod2BgJfg?= =?us-ascii?Q?1GiojEsYkB5kxRPwQwh1Yv/gTnPYbb0i1yAvOXfXbYrveqIjuFKuh0u6oRKW?= =?us-ascii?Q?zxROb/7aJ54hgNEZSt2Ry/OqdjW0fH3XxUir6DbB8aIu5aMoZRr5V+Ubij6S?= =?us-ascii?Q?yqg3t9GQyTRYl7YfIUamtk1B3pLipWH+EK3cN/egy9CHPuU4usMwqaCyXLJK?= =?us-ascii?Q?cnh//7Upy5WYkCnUBdydN9c+OAI73iO9ZOSJI5VRpnlHK2x4StZ5ftN53hCS?= =?us-ascii?Q?KEPRMI/pGUpiPZBH+kNqr/AaGt3+Yl3znJ/JYkqYDYUfioJgbfqM3LyIBO6w?= =?us-ascii?Q?6tMoU3aNolUs9eAog8o2MZSZcX1VWQ501zR+tJ5CFTE3lxsUho3rBrZ8czVd?= =?us-ascii?Q?p7Rd7ANxUS6xLUMS+i9Tkduif/cP5+dEie9LMy5Co0bVlDe5Lh54SbDdDmnK?= =?us-ascii?Q?mkQF533w1JPYzjTC29jPNHVglZKAFZTwKEd2FTASwwYsMAGOS0DCgRCyR7ej?= =?us-ascii?Q?71E04sxW/Zl1X7+7I+iAHQsPthJfOEepreUUi3e/og66AeMvy9jL7/aTGcjo?= =?us-ascii?Q?KP6eINi5HtbfNhrrIIBX30hw1SJAHFZ/ycbyXzJFF3dU1IBIiTvkHs0KWIp4?= =?us-ascii?Q?LWcIV3xKhSAZ3zJo1RFwkYaPowllIpgBwPW8/FTvGfeTOBlQup+cJB0K50Fy?= =?us-ascii?Q?PAAY86SrLMf6fpVAllz93lIVzU/xi5LPHE8eguSeAfLZdBxmNFSItGFiOU/m?= =?us-ascii?Q?iqrvkQhFK3r9TJ3hYGL/6CISpTQFExDcXoohExurKoFGYlT3M+/fBzi9v+k2?= =?us-ascii?Q?sNj8Uvd/4YfcoiBgPQ3ck/B0whZ9BMITnsuPb4IwfP3SCg2osrnZQIdupssl?= =?us-ascii?Q?ecbtodToNwHqzN+Cj/NU7EOueBzxE+HY+sDmqOz9hPJiUS+NH7XRkSUjd6ax?= =?us-ascii?Q?G616bPD5Re96CeB1hcOl+hoXmIbA+NaZYxKkeJpClzGd4/UgYHQe04M6MEA0?= =?us-ascii?Q?D4lD4Ep/+ZlecyOQtex+wPpM7QcC4wkQe5OTu3OkEvaszADA4BgB8kiHgzOG?= =?us-ascii?Q?lfdwc0jhHfavErZJhpEAreGR?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2866ef84-f9e1-45bf-f7bd-08d979ca2a2f X-MS-Exchange-CrossTenant-AuthSource: MWHPR1001MB2365.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2021 10:59:05.0995 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: klkIAZDZu02GlhP/M1dKzu0eQ/M5hgM1uKcxBzLHDiqMBJZ7dmoR+/4Px+s6HAl2lxnj6WPUP6GYNxQyLj80eUcGMeNxgl2ejfpQuLBZpgc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR10MB1888 X-Proofpoint-Virus-Version: vendor=nai engine=6300 definitions=10109 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 suspectscore=0 phishscore=0 mlxlogscore=999 malwarescore=0 mlxscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2109030001 definitions=main-2109170071 X-Proofpoint-ORIG-GUID: OZAKuFCE0iwqLFlNnO1BLWuWJDQOa7wn X-Proofpoint-GUID: OZAKuFCE0iwqLFlNnO1BLWuWJDQOa7wn X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Hi Sean, url: https://github.com/0day-ci/linux/commits/Sean-Paul/drm-hdcp-Pull-HDCP-auth-exchange-check-into-helpers/20210916-044145 base: git://anongit.freedesktop.org/drm-intel for-linux-next config: x86_64-randconfig-m001-20210916 (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter New smatch warnings: drivers/gpu/drm/drm_hdcp.c:1208 drm_hdcp_helper_enable_hdcp() error: uninitialized symbol 'check_link_interval'. Old smatch warnings: drivers/gpu/drm/drm_hdcp.c:514 drm_hdcp_atomic_check() warn: inconsistent indenting vim +/check_link_interval +1208 drivers/gpu/drm/drm_hdcp.c cbc5065be3a652f Sean Paul 2021-09-15 1127 static int drm_hdcp_helper_enable_hdcp(struct drm_hdcp_helper_data *data, cbc5065be3a652f Sean Paul 2021-09-15 1128 struct drm_atomic_state *state, cbc5065be3a652f Sean Paul 2021-09-15 1129 struct mutex *driver_mutex) cbc5065be3a652f Sean Paul 2021-09-15 1130 { cbc5065be3a652f Sean Paul 2021-09-15 1131 struct drm_connector *connector = data->connector; cbc5065be3a652f Sean Paul 2021-09-15 1132 struct drm_connector_state *conn_state; cbc5065be3a652f Sean Paul 2021-09-15 1133 struct drm_device *dev = connector->dev; cbc5065be3a652f Sean Paul 2021-09-15 1134 unsigned long check_link_interval; ^^^^^^^^^^^^^^^^^^^ cbc5065be3a652f Sean Paul 2021-09-15 1135 bool capable; cbc5065be3a652f Sean Paul 2021-09-15 1136 int ret = 0; cbc5065be3a652f Sean Paul 2021-09-15 1137 cbc5065be3a652f Sean Paul 2021-09-15 1138 conn_state = drm_atomic_get_new_connector_state(state, connector); cbc5065be3a652f Sean Paul 2021-09-15 1139 cbc5065be3a652f Sean Paul 2021-09-15 1140 mutex_lock(&data->mutex); cbc5065be3a652f Sean Paul 2021-09-15 1141 cbc5065be3a652f Sean Paul 2021-09-15 1142 if (data->value == DRM_MODE_CONTENT_PROTECTION_ENABLED) { cbc5065be3a652f Sean Paul 2021-09-15 1143 drm_hdcp_update_value(data, DRM_MODE_CONTENT_PROTECTION_ENABLED, cbc5065be3a652f Sean Paul 2021-09-15 1144 true); cbc5065be3a652f Sean Paul 2021-09-15 1145 goto out_data_mutex; cbc5065be3a652f Sean Paul 2021-09-15 1146 } cbc5065be3a652f Sean Paul 2021-09-15 1147 cbc5065be3a652f Sean Paul 2021-09-15 1148 drm_WARN_ON(dev, data->driver_mutex != NULL); cbc5065be3a652f Sean Paul 2021-09-15 1149 data->driver_mutex = driver_mutex; cbc5065be3a652f Sean Paul 2021-09-15 1150 cbc5065be3a652f Sean Paul 2021-09-15 1151 drm_hdcp_helper_driver_lock(data); cbc5065be3a652f Sean Paul 2021-09-15 1152 cbc5065be3a652f Sean Paul 2021-09-15 1153 if (data->funcs->setup) { cbc5065be3a652f Sean Paul 2021-09-15 1154 ret = data->funcs->setup(connector, state); cbc5065be3a652f Sean Paul 2021-09-15 1155 if (ret) { cbc5065be3a652f Sean Paul 2021-09-15 1156 drm_err(dev, "Failed to setup HDCP %d\n", ret); cbc5065be3a652f Sean Paul 2021-09-15 1157 goto out; cbc5065be3a652f Sean Paul 2021-09-15 1158 } cbc5065be3a652f Sean Paul 2021-09-15 1159 } cbc5065be3a652f Sean Paul 2021-09-15 1160 cbc5065be3a652f Sean Paul 2021-09-15 1161 if (!data->funcs->are_keys_valid || cbc5065be3a652f Sean Paul 2021-09-15 1162 !data->funcs->are_keys_valid(connector)) { cbc5065be3a652f Sean Paul 2021-09-15 1163 if (data->funcs->load_keys) { cbc5065be3a652f Sean Paul 2021-09-15 1164 ret = data->funcs->load_keys(connector); cbc5065be3a652f Sean Paul 2021-09-15 1165 if (ret) { cbc5065be3a652f Sean Paul 2021-09-15 1166 drm_err(dev, "Failed to load HDCP keys %d\n", ret); cbc5065be3a652f Sean Paul 2021-09-15 1167 goto out; cbc5065be3a652f Sean Paul 2021-09-15 1168 } cbc5065be3a652f Sean Paul 2021-09-15 1169 } cbc5065be3a652f Sean Paul 2021-09-15 1170 } cbc5065be3a652f Sean Paul 2021-09-15 1171 cbc5065be3a652f Sean Paul 2021-09-15 1172 /* cbc5065be3a652f Sean Paul 2021-09-15 1173 * Considering that HDCP2.2 is more secure than HDCP1.4, If the setup cbc5065be3a652f Sean Paul 2021-09-15 1174 * is capable of HDCP2.2, it is preferred to use HDCP2.2. cbc5065be3a652f Sean Paul 2021-09-15 1175 */ cbc5065be3a652f Sean Paul 2021-09-15 1176 ret = data->funcs->hdcp2_capable(connector, &capable); cbc5065be3a652f Sean Paul 2021-09-15 1177 if (ret) { cbc5065be3a652f Sean Paul 2021-09-15 1178 drm_err(dev, "HDCP 2.x capability check failed %d\n", ret); cbc5065be3a652f Sean Paul 2021-09-15 1179 goto out; cbc5065be3a652f Sean Paul 2021-09-15 1180 } cbc5065be3a652f Sean Paul 2021-09-15 1181 if (capable) { cbc5065be3a652f Sean Paul 2021-09-15 1182 data->enabled_type = DRM_MODE_HDCP_CONTENT_TYPE1; cbc5065be3a652f Sean Paul 2021-09-15 1183 ret = data->funcs->hdcp2_enable(connector); cbc5065be3a652f Sean Paul 2021-09-15 1184 if (!ret) { cbc5065be3a652f Sean Paul 2021-09-15 1185 check_link_interval = DRM_HDCP2_CHECK_PERIOD_MS; cbc5065be3a652f Sean Paul 2021-09-15 1186 goto out; cbc5065be3a652f Sean Paul 2021-09-15 1187 } cbc5065be3a652f Sean Paul 2021-09-15 1188 } cbc5065be3a652f Sean Paul 2021-09-15 1189 cbc5065be3a652f Sean Paul 2021-09-15 1190 /* cbc5065be3a652f Sean Paul 2021-09-15 1191 * When HDCP2.2 fails and Content Type is not Type1, HDCP1.4 will cbc5065be3a652f Sean Paul 2021-09-15 1192 * be attempted. cbc5065be3a652f Sean Paul 2021-09-15 1193 */ cbc5065be3a652f Sean Paul 2021-09-15 1194 ret = drm_hdcp_helper_hdcp1_capable(data, &capable); cbc5065be3a652f Sean Paul 2021-09-15 1195 if (ret) { cbc5065be3a652f Sean Paul 2021-09-15 1196 drm_err(dev, "HDCP 1.x capability check failed %d\n", ret); cbc5065be3a652f Sean Paul 2021-09-15 1197 goto out; cbc5065be3a652f Sean Paul 2021-09-15 1198 } cbc5065be3a652f Sean Paul 2021-09-15 1199 if (capable && conn_state->content_type != DRM_MODE_HDCP_CONTENT_TYPE1) { cbc5065be3a652f Sean Paul 2021-09-15 1200 data->enabled_type = DRM_MODE_HDCP_CONTENT_TYPE0; cbc5065be3a652f Sean Paul 2021-09-15 1201 ret = drm_hdcp_helper_hdcp1_enable(data); cbc5065be3a652f Sean Paul 2021-09-15 1202 if (!ret) cbc5065be3a652f Sean Paul 2021-09-15 1203 check_link_interval = DRM_HDCP_CHECK_PERIOD_MS; cbc5065be3a652f Sean Paul 2021-09-15 1204 } "ret = 0" and "check_link_interval" is unitialized on else path. cbc5065be3a652f Sean Paul 2021-09-15 1205 cbc5065be3a652f Sean Paul 2021-09-15 1206 out: cbc5065be3a652f Sean Paul 2021-09-15 1207 if (!ret) { cbc5065be3a652f Sean Paul 2021-09-15 @1208 schedule_delayed_work(&data->check_work, check_link_interval); ^^^^^^^^^^^^^^^^^^^ cbc5065be3a652f Sean Paul 2021-09-15 1209 drm_hdcp_update_value(data, DRM_MODE_CONTENT_PROTECTION_ENABLED, cbc5065be3a652f Sean Paul 2021-09-15 1210 true); cbc5065be3a652f Sean Paul 2021-09-15 1211 } cbc5065be3a652f Sean Paul 2021-09-15 1212 cbc5065be3a652f Sean Paul 2021-09-15 1213 drm_hdcp_helper_driver_unlock(data); cbc5065be3a652f Sean Paul 2021-09-15 1214 if (ret) cbc5065be3a652f Sean Paul 2021-09-15 1215 data->driver_mutex = NULL; cbc5065be3a652f Sean Paul 2021-09-15 1216 cbc5065be3a652f Sean Paul 2021-09-15 1217 out_data_mutex: cbc5065be3a652f Sean Paul 2021-09-15 1218 mutex_unlock(&data->mutex); cbc5065be3a652f Sean Paul 2021-09-15 1219 return ret; cbc5065be3a652f Sean Paul 2021-09-15 1220 } --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org _______________________________________________ kbuild mailing list -- kbuild@lists.01.org To unsubscribe send an email to kbuild-leave@lists.01.org From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============0120064801709018579==" MIME-Version: 1.0 From: Dan Carpenter To: kbuild-all@lists.01.org Subject: [kbuild] Re: [PATCH v2 04/13] drm/hdcp: Expand HDCP helper library for enable/disable/check Date: Fri, 17 Sep 2021 13:58:45 +0300 Message-ID: <202109170917.5gPBFFFL-lkp@intel.com> In-Reply-To: <20210915203834.1439-5-sean@poorly.run> List-Id: --===============0120064801709018579== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Sean, url: https://github.com/0day-ci/linux/commits/Sean-Paul/drm-hdcp-Pull-HD= CP-auth-exchange-check-into-helpers/20210916-044145 = base: git://anongit.freedesktop.org/drm-intel for-linux-next config: x86_64-randconfig-m001-20210916 (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter New smatch warnings: drivers/gpu/drm/drm_hdcp.c:1208 drm_hdcp_helper_enable_hdcp() error: uninit= ialized symbol 'check_link_interval'. Old smatch warnings: drivers/gpu/drm/drm_hdcp.c:514 drm_hdcp_atomic_check() warn: inconsistent i= ndenting vim +/check_link_interval +1208 drivers/gpu/drm/drm_hdcp.c cbc5065be3a652f Sean Paul 2021-09-15 1127 static int drm_hdcp_helper_enab= le_hdcp(struct drm_hdcp_helper_data *data, cbc5065be3a652f Sean Paul 2021-09-15 1128 struct drm_atomic_st= ate *state, cbc5065be3a652f Sean Paul 2021-09-15 1129 struct mutex *driver= _mutex) cbc5065be3a652f Sean Paul 2021-09-15 1130 { cbc5065be3a652f Sean Paul 2021-09-15 1131 struct drm_connector *connecto= r =3D data->connector; cbc5065be3a652f Sean Paul 2021-09-15 1132 struct drm_connector_state *co= nn_state; cbc5065be3a652f Sean Paul 2021-09-15 1133 struct drm_device *dev =3D con= nector->dev; cbc5065be3a652f Sean Paul 2021-09-15 1134 unsigned long check_link_inter= val; ^^^^^^^^^^^^^= ^^^^^^ cbc5065be3a652f Sean Paul 2021-09-15 1135 bool capable; cbc5065be3a652f Sean Paul 2021-09-15 1136 int ret =3D 0; cbc5065be3a652f Sean Paul 2021-09-15 1137 = cbc5065be3a652f Sean Paul 2021-09-15 1138 conn_state =3D drm_atomic_get_= new_connector_state(state, connector); cbc5065be3a652f Sean Paul 2021-09-15 1139 = cbc5065be3a652f Sean Paul 2021-09-15 1140 mutex_lock(&data->mutex); cbc5065be3a652f Sean Paul 2021-09-15 1141 = cbc5065be3a652f Sean Paul 2021-09-15 1142 if (data->value =3D=3D DRM_MOD= E_CONTENT_PROTECTION_ENABLED) { cbc5065be3a652f Sean Paul 2021-09-15 1143 drm_hdcp_update_value(data, D= RM_MODE_CONTENT_PROTECTION_ENABLED, cbc5065be3a652f Sean Paul 2021-09-15 1144 true); cbc5065be3a652f Sean Paul 2021-09-15 1145 goto out_data_mutex; cbc5065be3a652f Sean Paul 2021-09-15 1146 } cbc5065be3a652f Sean Paul 2021-09-15 1147 = cbc5065be3a652f Sean Paul 2021-09-15 1148 drm_WARN_ON(dev, data->driver_= mutex !=3D NULL); cbc5065be3a652f Sean Paul 2021-09-15 1149 data->driver_mutex =3D driver_= mutex; cbc5065be3a652f Sean Paul 2021-09-15 1150 = cbc5065be3a652f Sean Paul 2021-09-15 1151 drm_hdcp_helper_driver_lock(da= ta); cbc5065be3a652f Sean Paul 2021-09-15 1152 = cbc5065be3a652f Sean Paul 2021-09-15 1153 if (data->funcs->setup) { cbc5065be3a652f Sean Paul 2021-09-15 1154 ret =3D data->funcs->setup(co= nnector, state); cbc5065be3a652f Sean Paul 2021-09-15 1155 if (ret) { cbc5065be3a652f Sean Paul 2021-09-15 1156 drm_err(dev, "Failed to setu= p HDCP %d\n", ret); cbc5065be3a652f Sean Paul 2021-09-15 1157 goto out; cbc5065be3a652f Sean Paul 2021-09-15 1158 } cbc5065be3a652f Sean Paul 2021-09-15 1159 } cbc5065be3a652f Sean Paul 2021-09-15 1160 = cbc5065be3a652f Sean Paul 2021-09-15 1161 if (!data->funcs->are_keys_val= id || cbc5065be3a652f Sean Paul 2021-09-15 1162 !data->funcs->are_keys_val= id(connector)) { cbc5065be3a652f Sean Paul 2021-09-15 1163 if (data->funcs->load_keys) { cbc5065be3a652f Sean Paul 2021-09-15 1164 ret =3D data->funcs->load_ke= ys(connector); cbc5065be3a652f Sean Paul 2021-09-15 1165 if (ret) { cbc5065be3a652f Sean Paul 2021-09-15 1166 drm_err(dev, "Failed to loa= d HDCP keys %d\n", ret); cbc5065be3a652f Sean Paul 2021-09-15 1167 goto out; cbc5065be3a652f Sean Paul 2021-09-15 1168 } cbc5065be3a652f Sean Paul 2021-09-15 1169 } cbc5065be3a652f Sean Paul 2021-09-15 1170 } cbc5065be3a652f Sean Paul 2021-09-15 1171 = cbc5065be3a652f Sean Paul 2021-09-15 1172 /* cbc5065be3a652f Sean Paul 2021-09-15 1173 * Considering that HDCP2.2 is= more secure than HDCP1.4, If the setup cbc5065be3a652f Sean Paul 2021-09-15 1174 * is capable of HDCP2.2, it i= s preferred to use HDCP2.2. cbc5065be3a652f Sean Paul 2021-09-15 1175 */ cbc5065be3a652f Sean Paul 2021-09-15 1176 ret =3D data->funcs->hdcp2_cap= able(connector, &capable); cbc5065be3a652f Sean Paul 2021-09-15 1177 if (ret) { cbc5065be3a652f Sean Paul 2021-09-15 1178 drm_err(dev, "HDCP 2.x capabi= lity check failed %d\n", ret); cbc5065be3a652f Sean Paul 2021-09-15 1179 goto out; cbc5065be3a652f Sean Paul 2021-09-15 1180 } cbc5065be3a652f Sean Paul 2021-09-15 1181 if (capable) { cbc5065be3a652f Sean Paul 2021-09-15 1182 data->enabled_type =3D DRM_MO= DE_HDCP_CONTENT_TYPE1; cbc5065be3a652f Sean Paul 2021-09-15 1183 ret =3D data->funcs->hdcp2_en= able(connector); cbc5065be3a652f Sean Paul 2021-09-15 1184 if (!ret) { cbc5065be3a652f Sean Paul 2021-09-15 1185 check_link_interval =3D DRM_= HDCP2_CHECK_PERIOD_MS; cbc5065be3a652f Sean Paul 2021-09-15 1186 goto out; cbc5065be3a652f Sean Paul 2021-09-15 1187 } cbc5065be3a652f Sean Paul 2021-09-15 1188 } cbc5065be3a652f Sean Paul 2021-09-15 1189 = cbc5065be3a652f Sean Paul 2021-09-15 1190 /* cbc5065be3a652f Sean Paul 2021-09-15 1191 * When HDCP2.2 fails and Cont= ent Type is not Type1, HDCP1.4 will cbc5065be3a652f Sean Paul 2021-09-15 1192 * be attempted. cbc5065be3a652f Sean Paul 2021-09-15 1193 */ cbc5065be3a652f Sean Paul 2021-09-15 1194 ret =3D drm_hdcp_helper_hdcp1_= capable(data, &capable); cbc5065be3a652f Sean Paul 2021-09-15 1195 if (ret) { cbc5065be3a652f Sean Paul 2021-09-15 1196 drm_err(dev, "HDCP 1.x capabi= lity check failed %d\n", ret); cbc5065be3a652f Sean Paul 2021-09-15 1197 goto out; cbc5065be3a652f Sean Paul 2021-09-15 1198 } cbc5065be3a652f Sean Paul 2021-09-15 1199 if (capable && conn_state->con= tent_type !=3D DRM_MODE_HDCP_CONTENT_TYPE1) { cbc5065be3a652f Sean Paul 2021-09-15 1200 data->enabled_type =3D DRM_MO= DE_HDCP_CONTENT_TYPE0; cbc5065be3a652f Sean Paul 2021-09-15 1201 ret =3D drm_hdcp_helper_hdcp1= _enable(data); cbc5065be3a652f Sean Paul 2021-09-15 1202 if (!ret) cbc5065be3a652f Sean Paul 2021-09-15 1203 check_link_interval =3D DRM_= HDCP_CHECK_PERIOD_MS; cbc5065be3a652f Sean Paul 2021-09-15 1204 } "ret =3D 0" and "check_link_interval" is unitialized on else path. cbc5065be3a652f Sean Paul 2021-09-15 1205 = cbc5065be3a652f Sean Paul 2021-09-15 1206 out: cbc5065be3a652f Sean Paul 2021-09-15 1207 if (!ret) { cbc5065be3a652f Sean Paul 2021-09-15 @1208 schedule_delayed_work(&data->= check_work, check_link_interval); = ^^^^^^^^^^^^^^^^^^^ cbc5065be3a652f Sean Paul 2021-09-15 1209 drm_hdcp_update_value(data, D= RM_MODE_CONTENT_PROTECTION_ENABLED, cbc5065be3a652f Sean Paul 2021-09-15 1210 true); cbc5065be3a652f Sean Paul 2021-09-15 1211 } cbc5065be3a652f Sean Paul 2021-09-15 1212 = cbc5065be3a652f Sean Paul 2021-09-15 1213 drm_hdcp_helper_driver_unlock(= data); cbc5065be3a652f Sean Paul 2021-09-15 1214 if (ret) cbc5065be3a652f Sean Paul 2021-09-15 1215 data->driver_mutex =3D NULL; cbc5065be3a652f Sean Paul 2021-09-15 1216 = cbc5065be3a652f Sean Paul 2021-09-15 1217 out_data_mutex: cbc5065be3a652f Sean Paul 2021-09-15 1218 mutex_unlock(&data->mutex); cbc5065be3a652f Sean Paul 2021-09-15 1219 return ret; cbc5065be3a652f Sean Paul 2021-09-15 1220 } --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org = _______________________________________________ kbuild mailing list -- kbuild(a)lists.01.org To unsubscribe send an email to kbuild-leave(a)lists.01.org --===============0120064801709018579==--