Skip to contentSkip to conversation

Don't mark cpufreq_stats_free_table with __cpuexit

PATCH In review Russell King 2 participants 2 messages Dec 14, 2007 CPU frequency scaling framework

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Don't mark cpufreq_stats_free_table with __cpuexit

Commit 55395ae72b6e5ae614d28df74158c47454652583 introduced:

.exit.text' referenced in section .init.text' of drivers/built-in.o: defined in discarded section `.exit.text' of drivers/built-in.o

Never mark functions that may be called during run time or initialisation time with a section that may be (or have been) discarded.

It was mentioned in the commit comments that an exit-section function was being called from an init-section function. This should _always_ result in the patch being rejected. It's just a big no no.

drivers/cpufreq/cpufreq_stats.c +2 -1
index 8a45d0f..bf5f780 100644
@@ -164,7 +164,8 @@ freq_table_get_index(struct cpufreq_stats *stat, unsigned int freq)
 	return -1;
 }
 
-static void __cpuexit cpufreq_stats_free_table(unsigned int cpu)
+/* functions called from init paths can not be marked for an exit section */
+static void /*__cpuexit*/ cpufreq_stats_free_table(unsigned int cpu)
 {
 	struct cpufreq_stats *stat = cpufreq_stats_table[cpu];
 	struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
Signature · 3 lines
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:
#1 lore raw
Quoted 20 lines · On Fri, 14 Dec 2007 13:45:48 +0000 Russell King <[email protected]>…

Commit 55395ae72b6e5ae614d28df74158c47454652583 introduced:

.exit.text' referenced in section .init.text' of drivers/built-in.o: defined in discarded section `.exit.text' of drivers/built-in.o

Never mark functions that may be called during run time or initialisation time with a section that may be (or have been) discarded.

It was mentioned in the commit comments that an exit-section function was being called from an init-section function. This should _always_ result in the patch being rejected. It's just a big no no.

drivers/cpufreq/cpufreq_stats.c +0 -0
index 8a45d0f..bf5f780 100644

drivers/cpufreq/cpufreq_stats.c freq_table_get_index(struct cpufreq_stats *stat, unsigned int freq) · line 171

Quoted 9 lines
drivers/cpufreq/cpufreq_stats.c +2 -1
@@ -164,7 +164,8 @@ freq_table_get_index(struct cpufreq_stats *stat, unsigned int freq)
 	return -1;
 }
 
-static void __cpuexit cpufreq_stats_free_table(unsigned int cpu)
+/* functions called from init paths can not be marked for an exit section */
+static void /*__cpuexit*/ cpufreq_stats_free_table(unsigned int cpu)
 {
 	struct cpufreq_stats *stat = cpufreq_stats_table[cpu];
 	struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);

yu, thanks, I have a fix for this from Adrian queued for when Linus resurfaces.