Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp3599694pxf; Mon, 22 Mar 2021 10:09:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwtFkmD8LV8H7Yv8juHjIcu0NYTCCvN7QUa/j6QnZx1qe7je+WeSxFgyg2xGbxeByPqfcT2 X-Received: by 2002:a17:906:bd2:: with SMTP id y18mr833975ejg.482.1616432955744; Mon, 22 Mar 2021 10:09:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1616432955; cv=none; d=google.com; s=arc-20160816; b=GphB1FDF0cnsmYDHTxRygYH9W5qFdDW/au90ldlUmhqvsm4OjnI5xYR/YOoGq1JS8b w4ha7iRLp1PXO6VKx1t467/dI9Kz41w4Huq0FJEJyQrvv3J3nxcwyXCKVK8R75okf2wM hKLk5uTjIwxMa5bbw7vY9QWpufrLwP463eCt+8tU+I0SdvHmq2xmeZL7QoLD/M3kUWZO AWZAF2gjCivL86NkszTVAHsiFuShrB7PiCvfVH8KweG87Ne07/RfBcKbriirO/X6QTfR vPNI54lS96Afen1UtxvzRIqWpUpbWQS2rqnqO6wz5NvdinANOjBHrEjLSMyfIkBtY0dI yoBA== 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:dkim-signature; bh=Vzih6KqA6+mwvCvRSFM8ofezzdbjMdoYtIQu8lwrAiY=; b=su4FFl6bHH/F12NJbo4kko99pCYK9imrv0DSfTQVfrTvs728O3uA5z82KbtZgESchT rlhXTFkYZJU1S2V4z4M4XUil/uMCa+903K2LBknVH/R0FWvgsb917WIobe1G+JF56ZiL Xhmmttqf9MwBRAM9SI4b5K7NkoaA6KUIWWDtVb9HEwRQSs03typ9tb+6fihCOpPYje2m rECcN7CPgo/y2QNKR9nuapWRn5cnii972QQ2vdvhVLRTqBkR9gcDR+t8A0psKIDmKaEy dUnnLJ7ob3uo8A4ssgDU6F37IW3kFQQjTeGcxY9WogiDeTNtuPRRya+507FCXTFeroW/ vDuQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=IBLzoCdD; 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=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id dg2si11514321edb.136.2021.03.22.10.08.53; Mon, 22 Mar 2021 10:09:15 -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=@kernel.org header.s=k20201202 header.b=IBLzoCdD; 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=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231877AbhCVRHr (ORCPT + 99 others); Mon, 22 Mar 2021 13:07:47 -0400 Received: from mail.kernel.org ([198.145.29.99]:42386 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230258AbhCVRHR (ORCPT ); Mon, 22 Mar 2021 13:07:17 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id F29736146D; Mon, 22 Mar 2021 17:07:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1616432836; bh=peIWiBD6YyOiuy/e+6IZKWkYGqpzY2VbfDHlDQ1GKXk=; h=From:To:Cc:Subject:Date:From; b=IBLzoCdD1FBARnSXkOyUat3DHa/o56FIYaYwfHZn8ZI4jWDucXVaG/EPjCHs3hJ6F dZ0nROw0I3OrWbjmX6X9sOEf+V3gzesMghGF6FSkXKnH3z9kuLws8fTZboc59pt5wl U3ASX2jdp6my3fU276SLPxvmKrL1k1mFM4Zbp+aEk/HWnf3OeiuG0X7w+OQjI/s5KV 5kptU59J/rAIKc6YlRw1nw/BLW5pdW/j7rVnTHslbQzKsMMoVM3H1FcW/j4XC/6Bl/ lqcfg5W3Gyd8pO26DFZCIrgAY7t+jKiee6yDGoDaO1Oy4SVZ9yVwSma3I4EBkZmBuH VbpOYEIiErUZQ== From: Arnd Bergmann To: Peter Zijlstra , Josh Poimboeuf , Jason Baron , Ingo Molnar , Juri Lelli , Vincent Guittot Cc: Arnd Bergmann , Steven Rostedt , Ard Biesheuvel , Dietmar Eggemann , Ben Segall , Mel Gorman , Daniel Bristot de Oliveira , Frederic Weisbecker , linux-kernel@vger.kernel.org Subject: [PATCH] static_call: fix function type mismatch Date: Mon, 22 Mar 2021 18:06:37 +0100 Message-Id: <20210322170711.1855115-1-arnd@kernel.org> 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 From: Arnd Bergmann The __static_call_return0() function is declared to return a 'long', while it aliases a couple of functions that all return 'int'. When building with 'make W=1', gcc warns about this: kernel/sched/core.c:5420:37: error: cast between incompatible function types from 'long int (*)(void)' to 'int (*)(void)' [-Werror=cast-function-type] 5420 | static_call_update(might_resched, (typeof(&__cond_resched)) __static_call_return0); Change the function to return 'int' as well, but remove the cast to ensure we get a warning if any of the types ever change. Signed-off-by: Arnd Bergmann --- include/linux/static_call.h | 6 +++--- kernel/sched/core.c | 6 +++--- kernel/static_call.c | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/include/linux/static_call.h b/include/linux/static_call.h index 85ecc789f4ff..3fc2975906ad 100644 --- a/include/linux/static_call.h +++ b/include/linux/static_call.h @@ -148,7 +148,7 @@ extern void __static_call_update(struct static_call_key *key, void *tramp, void extern int static_call_mod_init(struct module *mod); extern int static_call_text_reserved(void *start, void *end); -extern long __static_call_return0(void); +extern int __static_call_return0(void); #define __DEFINE_STATIC_CALL(name, _func, _func_init) \ DECLARE_STATIC_CALL(name, _func); \ @@ -221,7 +221,7 @@ static inline int static_call_text_reserved(void *start, void *end) return 0; } -static inline long __static_call_return0(void) +static inline int __static_call_return0(void) { return 0; } @@ -247,7 +247,7 @@ struct static_call_key { void *func; }; -static inline long __static_call_return0(void) +static inline int __static_call_return0(void) { return 0; } diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 3a36f0b0742e..d22c609b9484 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -5399,7 +5399,7 @@ static void sched_dynamic_update(int mode) switch (mode) { case preempt_dynamic_none: static_call_update(cond_resched, __cond_resched); - static_call_update(might_resched, (typeof(&__cond_resched)) __static_call_return0); + static_call_update(might_resched, __static_call_return0); static_call_update(preempt_schedule, (typeof(&preempt_schedule)) NULL); static_call_update(preempt_schedule_notrace, (typeof(&preempt_schedule_notrace)) NULL); static_call_update(irqentry_exit_cond_resched, (typeof(&irqentry_exit_cond_resched)) NULL); @@ -5416,8 +5416,8 @@ static void sched_dynamic_update(int mode) break; case preempt_dynamic_full: - static_call_update(cond_resched, (typeof(&__cond_resched)) __static_call_return0); - static_call_update(might_resched, (typeof(&__cond_resched)) __static_call_return0); + static_call_update(cond_resched, __static_call_return0); + static_call_update(might_resched, __static_call_return0); static_call_update(preempt_schedule, __preempt_schedule_func); static_call_update(preempt_schedule_notrace, __preempt_schedule_notrace_func); static_call_update(irqentry_exit_cond_resched, irqentry_exit_cond_resched); diff --git a/kernel/static_call.c b/kernel/static_call.c index 6906c6ec4c97..11aa4bcee315 100644 --- a/kernel/static_call.c +++ b/kernel/static_call.c @@ -489,7 +489,7 @@ int __init static_call_init(void) } early_initcall(static_call_init); -long __static_call_return0(void) +int __static_call_return0(void) { return 0; } -- 2.29.2