Thread (6 messages) 6 messages, 3 authors, 2012-06-24

Re: [PATCH RESEND] of: add const to struct of_device_id.data

From: Arnd Bergmann <arnd@arndb.de>
Date: 2012-06-22 17:26:27
Also in: lkml
Subsystem: arm port, atm, the rest · Maintainers: Russell King, Chas Williams, Linus Torvalds

On Friday 22 June 2012, Uwe Kleine-König wrote:
On Thu, Jun 07, 2012 at 12:20:14PM +0200, Uwe Kleine-König wrote:
quoted
Drivers should never need to modify the data of a device id. So it can
be const which in turn allows more consts in the driver.

Signed-off-by: Uwe Kleine-König <redacted>
---
(Cc += lkml + Grant)

Hello,

this might introduce warnings in drivers that access the data member
without using const, so this is definitly merge window material if it is
considered at all.
ping
Sorry for the delayed response. I think the approach is right, but I
am a bit worried about adding warnings for legit code.

A quick test with the defconfigs gave me this error for prima2_defconfig
and kzm9g_defconfig:

/home/arnd/linux-arm/arch/arm/mm/cache-l2x0.c: In function 'l2x0_of_init':
/home/arnd/linux-arm/arch/arm/mm/cache-l2x0.c:573:7: error: assignment discards 'const' qualifier from pointer target type [-Werror]

and this one with at91sam9263_defconfig:
/home/arnd/linux-arm/drivers/misc/atmel_tclib.c: In function 'tc_probe':
/home/arnd/linux-arm/drivers/misc/atmel_tclib.c:170:19: error: assignment discards 'const' qualifier from pointer target type [-Werror]

I haven't checked all the defconfigs yet, but I think we should at least
make sure they build fine before applying your patch.

	Arnd

8<---
diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c
index 2a8e380..577baf7 100644
--- a/arch/arm/mm/cache-l2x0.c
+++ b/arch/arm/mm/cache-l2x0.c
@@ -554,7 +554,7 @@ static const struct of_device_id l2x0_ids[] __initconst = {
 int __init l2x0_of_init(u32 aux_val, u32 aux_mask)
 {
 	struct device_node *np;
-	struct l2x0_of_data *data;
+	const struct l2x0_of_data *data;
 	struct resource res;
 
 	np = of_find_matching_node(NULL, l2x0_ids);
diff --git a/include/linux/atmel_tc.h b/include/linux/atmel_tc.h
index 1d14b1dc..89a931b 100644
--- a/include/linux/atmel_tc.h
+++ b/include/linux/atmel_tc.h
@@ -63,7 +63,7 @@ struct atmel_tc {
 	struct platform_device	*pdev;
 	struct resource		*iomem;
 	void __iomem		*regs;
-	struct atmel_tcb_config	*tcb_config;
+	const struct atmel_tcb_config *tcb_config;
 	int			irq[3];
 	struct clk		*clk[3];
 	struct list_head	node;
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help