linux-sparse.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Bogus 'Initializer entry defined twice' warnings
@ 2014-08-29  8:10 Hans Verkuil
  2014-11-05  7:44 ` Hans Verkuil
  2014-11-12 15:39 ` Christopher Li
  0 siblings, 2 replies; 9+ messages in thread
From: Hans Verkuil @ 2014-08-29  8:10 UTC (permalink / raw)
  To: linux-sparse

The following test source (based on drivers/media/pci/cx88/cx88-cards.c from
the kernel) gives these sparse warnings:

cards4.c:447:36: warning: Initializer entry defined twice
cards4.c:449:19:   also defined here
cards4.c:456:36: warning: Initializer entry defined twice
cards4.c:458:19:   also defined here
cards4.c:611:36: warning: Initializer entry defined twice
cards4.c:613:19:   also defined here
cards4.c:620:36: warning: Initializer entry defined twice
cards4.c:622:19:   also defined here
cards4.c:629:36: warning: Initializer entry defined twice
cards4.c:631:20:   also defined here
cards4.c:638:37: warning: Initializer entry defined twice
cards4.c:640:20:   also defined here
cards4.c:611:36: warning: Initializer entry defined twice
cards4.c:613:19:   also defined here
cards4.c:620:36: warning: Initializer entry defined twice
cards4.c:622:19:   also defined here
cards4.c:629:36: warning: Initializer entry defined twice
cards4.c:631:20:   also defined here
cards4.c:638:37: warning: Initializer entry defined twice
cards4.c:640:20:   also defined here
cards4.c:675:26: warning: Initializer entry defined twice
cards4.c:676:26:   also defined here
cards4.c:727:37: warning: Initializer entry defined twice
cards4.c:729:20:   also defined here
cards4.c:736:36: warning: Initializer entry defined twice
cards4.c:738:20:   also defined here
cards4.c:824:36: warning: Initializer entry defined twice
cards4.c:826:20:   also defined here
cards4.c:815:36: warning: Initializer entry defined twice
cards4.c:817:20:   also defined here
cards4.c:824:36: warning: Initializer entry defined twice
cards4.c:826:20:   also defined here
cards4.c:815:36: warning: Initializer entry defined twice
cards4.c:817:20:   also defined here

These warnings are patently false, and removing a single entry
(say the first one) will result in a set of warnings for different
lines. Frankly, it looks what would happen if there is a wrong
hash table lookup.

I am using the latest sparse code from
git://git.kernel.org/pub/scm/devel/sparse/chrisl/sparse.git.


Regards,

	Hans

------------------- cut here ------------------------
#define CX88_BOARD_UNKNOWN                  0
#define CX88_BOARD_HAUPPAUGE                1
#define CX88_BOARD_GDI                      2
#define CX88_BOARD_PIXELVIEW                3
#define CX88_BOARD_ATI_WONDER_PRO           4
#define CX88_BOARD_WINFAST2000XP_EXPERT     5
#define CX88_BOARD_AVERTV_STUDIO_303        6
#define CX88_BOARD_MSI_TVANYWHERE_MASTER    7
#define CX88_BOARD_WINFAST_DV2000           8
#define CX88_BOARD_LEADTEK_PVR2000          9
#define CX88_BOARD_IODATA_GVVCP3PCI        10
#define CX88_BOARD_PROLINK_PLAYTVPVR       11
#define CX88_BOARD_ASUS_PVR_416            12
#define CX88_BOARD_MSI_TVANYWHERE          13
#define CX88_BOARD_KWORLD_DVB_T            14
#define CX88_BOARD_DVICO_FUSIONHDTV_DVB_T1 15
#define CX88_BOARD_KWORLD_LTV883           16
#define CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q  17
#define CX88_BOARD_HAUPPAUGE_DVB_T1        18
#define CX88_BOARD_CONEXANT_DVB_T1         19
#define CX88_BOARD_PROVIDEO_PV259          20
#define CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PLUS 21
#define CX88_BOARD_PCHDTV_HD3000           22
#define CX88_BOARD_DNTV_LIVE_DVB_T         23
#define CX88_BOARD_HAUPPAUGE_ROSLYN        24
#define CX88_BOARD_DIGITALLOGIC_MEC        25
#define CX88_BOARD_IODATA_GVBCTV7E         26
#define CX88_BOARD_PIXELVIEW_PLAYTV_ULTRA_PRO 27
#define CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_T  28
#define CX88_BOARD_ADSTECH_DVB_T_PCI          29
#define CX88_BOARD_TERRATEC_CINERGY_1400_DVB_T1  30
#define CX88_BOARD_DVICO_FUSIONHDTV_5_GOLD 31
#define CX88_BOARD_AVERMEDIA_ULTRATV_MC_550 32
#define CX88_BOARD_KWORLD_VSTREAM_EXPERT_DVD 33
#define CX88_BOARD_ATI_HDTVWONDER          34
#define CX88_BOARD_WINFAST_DTV1000         35
#define CX88_BOARD_AVERTV_303              36
#define CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1  37
#define CX88_BOARD_HAUPPAUGE_NOVASE2_S1    38
#define CX88_BOARD_KWORLD_DVBS_100         39
#define CX88_BOARD_HAUPPAUGE_HVR1100       40
#define CX88_BOARD_HAUPPAUGE_HVR1100LP     41
#define CX88_BOARD_DNTV_LIVE_DVB_T_PRO     42
#define CX88_BOARD_KWORLD_DVB_T_CX22702    43
#define CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL 44
#define CX88_BOARD_KWORLD_HARDWARE_MPEG_TV_XPERT 45
#define CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_HYBRID 46
#define CX88_BOARD_PCHDTV_HD5500           47
#define CX88_BOARD_KWORLD_MCE200_DELUXE    48
#define CX88_BOARD_PIXELVIEW_PLAYTV_P7000  49
#define CX88_BOARD_NPGTECH_REALTV_TOP10FM  50
#define CX88_BOARD_WINFAST_DTV2000H        51
#define CX88_BOARD_GENIATECH_DVBS          52
#define CX88_BOARD_HAUPPAUGE_HVR3000       53
#define CX88_BOARD_NORWOOD_MICRO           54
#define CX88_BOARD_TE_DTV_250_OEM_SWANN    55
#define CX88_BOARD_HAUPPAUGE_HVR1300       56
#define CX88_BOARD_ADSTECH_PTV_390         57
#define CX88_BOARD_PINNACLE_PCTV_HD_800i   58
#define CX88_BOARD_DVICO_FUSIONHDTV_5_PCI_NANO 59
#define CX88_BOARD_PINNACLE_HYBRID_PCTV    60
#define CX88_BOARD_WINFAST_TV2000_XP_GLOBAL 61
#define CX88_BOARD_POWERCOLOR_REAL_ANGEL   62
#define CX88_BOARD_GENIATECH_X8000_MT      63
#define CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PRO 64
#define CX88_BOARD_DVICO_FUSIONHDTV_7_GOLD 65
#define CX88_BOARD_PROLINK_PV_8000GT       66
#define CX88_BOARD_KWORLD_ATSC_120         67
#define CX88_BOARD_HAUPPAUGE_HVR4000       68
#define CX88_BOARD_HAUPPAUGE_HVR4000LITE   69
#define CX88_BOARD_TEVII_S460              70
#define CX88_BOARD_OMICOM_SS4_PCI          71
#define CX88_BOARD_TBS_8920                72
#define CX88_BOARD_TEVII_S420              73
#define CX88_BOARD_PROLINK_PV_GLOBAL_XTREME 74
#define CX88_BOARD_PROF_7300               75
#define CX88_BOARD_SATTRADE_ST4200         76
#define CX88_BOARD_TBS_8910                77
#define CX88_BOARD_PROF_6200               78
#define CX88_BOARD_TERRATEC_CINERGY_HT_PCI_MKII 79
#define CX88_BOARD_HAUPPAUGE_IRONLY        80
#define CX88_BOARD_WINFAST_DTV1800H        81
#define CX88_BOARD_WINFAST_DTV2000H_J      82
#define CX88_BOARD_PROF_7301               83
#define CX88_BOARD_SAMSUNG_SMT_7020        84
#define CX88_BOARD_TWINHAN_VP1027_DVBS     85
#define CX88_BOARD_TEVII_S464              86
#define CX88_BOARD_WINFAST_DTV2000H_PLUS   87
#define CX88_BOARD_WINFAST_DTV1800H_XC4000 88
#define CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F36 89
#define CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F43 90

#define MAX_CX88_INPUT 8

enum cx88_itype {
	CX88_VMUX_COMPOSITE1 = 1,
	CX88_VMUX_COMPOSITE2,
	CX88_VMUX_COMPOSITE3,
	CX88_VMUX_COMPOSITE4,
	CX88_VMUX_SVIDEO,
	CX88_VMUX_TELEVISION,
	CX88_VMUX_CABLE,
	CX88_VMUX_DVB,
	CX88_VMUX_DEBUG,
	CX88_RADIO,
};

struct cx88_input {
	enum cx88_itype type;
};

struct cx88_board {
	struct cx88_input       input[MAX_CX88_INPUT];
};

static const struct cx88_board cx88_boards[] = {
	[CX88_BOARD_UNKNOWN] = {
		.input          = {{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_COMPOSITE2,
		},{
			.type   = CX88_VMUX_COMPOSITE3,
		},{
			.type   = CX88_VMUX_COMPOSITE4,
		}},
	},
	[CX88_BOARD_HAUPPAUGE] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_DEBUG,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_GDI] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_PIXELVIEW] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_ATI_WONDER_PRO] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_WINFAST2000XP_EXPERT] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_AVERTV_STUDIO_303] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_MSI_TVANYWHERE_MASTER] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_WINFAST_DV2000] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_LEADTEK_PVR2000] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_IODATA_GVVCP3PCI] = {
		.input          = {{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_COMPOSITE2,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_PROLINK_PLAYTVPVR] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_ASUS_PVR_416] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_MSI_TVANYWHERE] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_KWORLD_DVB_T] = {
		.input          = {{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_DVICO_FUSIONHDTV_DVB_T1] = {
		.input          = {{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_KWORLD_LTV883] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_DEBUG,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_CABLE,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_HAUPPAUGE_DVB_T1] = {
		.input          = {{
			.type   = CX88_VMUX_DVB,
		}},
	},
	[CX88_BOARD_CONEXANT_DVB_T1] = {
		.input          = {{
			.type   = CX88_VMUX_DVB,
		}},
	},
	[CX88_BOARD_PROVIDEO_PV259] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		}},
	},
	[CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PLUS] = {
		.input          = {{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_DNTV_LIVE_DVB_T] = {
		.input		= {{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_PCHDTV_HD3000] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_HAUPPAUGE_ROSLYN] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_DEBUG,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_DIGITALLOGIC_MEC] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_IODATA_GVBCTV7E] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}}
	},
	[CX88_BOARD_PIXELVIEW_PLAYTV_ULTRA_PRO] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_T] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_ADSTECH_DVB_T_PCI] = {
		.input          = {{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_TERRATEC_CINERGY_1400_DVB_T1] = {
		.input          = {{
			.type   = CX88_VMUX_DVB,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_DVICO_FUSIONHDTV_5_GOLD] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_AVERMEDIA_ULTRATV_MC_550] = {
		.input          = {{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		},{
			.type   = CX88_VMUX_TELEVISION,
		}},
	},
	[CX88_BOARD_KWORLD_VSTREAM_EXPERT_DVD] = {
		 .input          = {{
			 .type   = CX88_VMUX_COMPOSITE1,
		 },{
			 .type   = CX88_VMUX_SVIDEO,
		 }},
	},
	[CX88_BOARD_ATI_HDTVWONDER] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_WINFAST_DTV1000] = {
		.input          = {{
			.type   = CX88_VMUX_DVB,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_AVERTV_303] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1] = {
		.input		= {{
			.type	= CX88_VMUX_DVB,
		},{
			.type	= CX88_VMUX_COMPOSITE1,
		},{
			.type	= CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_HAUPPAUGE_NOVASE2_S1] = {
		.input		= {{
			.type	= CX88_VMUX_DVB,
		}},
	},
	[CX88_BOARD_KWORLD_DVBS_100] = {
		.input		= {{
			.type	= CX88_VMUX_DVB,
		},{
			.type	= CX88_VMUX_COMPOSITE1,
		},{
			.type	= CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_HAUPPAUGE_HVR1100] = {
		.input		= {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type	= CX88_VMUX_COMPOSITE1,
		},{
			.type	= CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_HAUPPAUGE_HVR1100LP] = {
		.input		= {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type	= CX88_VMUX_COMPOSITE1,
		}},
	},
	[CX88_BOARD_DNTV_LIVE_DVB_T_PRO] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_KWORLD_DVB_T_CX22702] = {
		.input          = {{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL] = {
		.input          = {{
			.type   = CX88_VMUX_COMPOSITE1,
		 },{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_KWORLD_HARDWARE_MPEG_TV_XPERT] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_HYBRID] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_PCHDTV_HD5500] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_KWORLD_MCE200_DELUXE] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		}},
	},
	[CX88_BOARD_PIXELVIEW_PLAYTV_P7000] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		}},
	},
	[CX88_BOARD_NPGTECH_REALTV_TOP10FM] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_WINFAST_DTV2000H] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		}, {
			.type   = CX88_VMUX_COMPOSITE1,
		}, {
			.type   = CX88_VMUX_COMPOSITE2,
		}, {
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_WINFAST_DTV2000H_J] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_GENIATECH_DVBS] = {
		.input  = {{
			.type  = CX88_VMUX_DVB,
		},{
			.type  = CX88_VMUX_COMPOSITE1,
		}},
	},
	[CX88_BOARD_HAUPPAUGE_HVR3000] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_NORWOOD_MICRO] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_TE_DTV_250_OEM_SWANN] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_HAUPPAUGE_HVR1300] = {
		.input		= {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type	= CX88_VMUX_COMPOSITE1,
		},{
			.type	= CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_SAMSUNG_SMT_7020] = {
		.input		= { {
			.type	= CX88_VMUX_DVB,
		} },
	},
	[CX88_BOARD_ADSTECH_PTV_390] = {
		.input          = {{
			.type   = CX88_VMUX_DEBUG,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_PINNACLE_PCTV_HD_800i] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_DVICO_FUSIONHDTV_5_PCI_NANO] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		}, {
			.type   = CX88_VMUX_COMPOSITE1,
		}, {
			.type   = CX88_VMUX_SVIDEO,
		} },
	},
	[CX88_BOARD_PINNACLE_HYBRID_PCTV] = {
		.input          = { {
			.type   = CX88_VMUX_TELEVISION,
		}, {
			.type   = CX88_VMUX_COMPOSITE1,
		}, {
			.type   = CX88_VMUX_SVIDEO,
		} },
	},
	[CX88_BOARD_WINFAST_TV2000_XP_GLOBAL] = {
		.input          = { {
			.type   = CX88_VMUX_TELEVISION,
		}, {
			.type   = CX88_VMUX_COMPOSITE1,
		}, {
			.type   = CX88_VMUX_SVIDEO,
		} },
	},
	[CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F36] = {
		.input          = { {
			.type   = CX88_VMUX_TELEVISION,
		}, {
			.type   = CX88_VMUX_COMPOSITE1,
		}, {
			.type   = CX88_VMUX_SVIDEO,
		} },
	},
	[CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F43] = {
		.input          = { {
			.type   = CX88_VMUX_TELEVISION,
		}, {
			.type   = CX88_VMUX_COMPOSITE1,
		}, {
			.type   = CX88_VMUX_SVIDEO,
		} },
	},
	[CX88_BOARD_POWERCOLOR_REAL_ANGEL] = {
		.input          = { {
			.type   = CX88_VMUX_DEBUG,
			.type   = CX88_VMUX_TELEVISION,
		}, {
			.type   = CX88_VMUX_COMPOSITE1,
		}, {
			.type   = CX88_VMUX_SVIDEO,
		} },
	},
	[CX88_BOARD_GENIATECH_X8000_MT] = {
		.input          = { {
			.type   = CX88_VMUX_TELEVISION,
		}, {
			.type   = CX88_VMUX_COMPOSITE1,
		}, {
			.type   = CX88_VMUX_SVIDEO,
		} },
	},
	[CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PRO] = {
		.input          = { {
			.type   = CX88_VMUX_COMPOSITE1,
		}, {
			.type   = CX88_VMUX_SVIDEO,
		} },
	},
	[CX88_BOARD_DVICO_FUSIONHDTV_7_GOLD] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		},{
			.type   = CX88_VMUX_COMPOSITE1,
		},{
			.type   = CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_PROLINK_PV_8000GT] = {
		.input          = { {
			.type   = CX88_VMUX_TELEVISION,
		}, {
			.type   = CX88_VMUX_COMPOSITE1,
		}, {
			.type   = CX88_VMUX_SVIDEO,
		} },
	},
	[CX88_BOARD_PROLINK_PV_GLOBAL_XTREME] = {
		.input          = { {
			.type   = CX88_VMUX_TELEVISION,
		}, {
			.type   = CX88_VMUX_COMPOSITE1,
		}, {
			.type   = CX88_VMUX_SVIDEO,
		} },
	},
	[CX88_BOARD_KWORLD_ATSC_120] = {
		.input          = { {
			.type   = CX88_VMUX_TELEVISION,
		}, {
			.type   = CX88_VMUX_COMPOSITE1,
		}, {
			.type   = CX88_VMUX_SVIDEO,
		} },
	},
	[CX88_BOARD_HAUPPAUGE_HVR4000] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		}, {
			.type   = CX88_VMUX_COMPOSITE1,
		}, {
			.type   = CX88_VMUX_SVIDEO,
		} },
	},
	[CX88_BOARD_HAUPPAUGE_HVR4000LITE] = {
		.input          = {{
			.type   = CX88_VMUX_DVB,
		} },
	},
	[CX88_BOARD_TEVII_S420] = {
		.input          = {{
			.type   = CX88_VMUX_DVB,
		} },
	},
	[CX88_BOARD_TEVII_S460] = {
		.input          = {{
			.type   = CX88_VMUX_DVB,
		} },
	},
	[CX88_BOARD_TEVII_S464] = {
		.input          = {{
			.type   = CX88_VMUX_DVB,
		} },
	},
	[CX88_BOARD_OMICOM_SS4_PCI] = {
		.input          = {{
			.type   = CX88_VMUX_DVB,
		} },
	},
	[CX88_BOARD_TBS_8910] = {
		.input          = {{
			.type   = CX88_VMUX_DVB,
		} },
	},
	[CX88_BOARD_TBS_8920] = {
		.input          = {{
			.type   = CX88_VMUX_DVB,
		} },
	},
	[CX88_BOARD_PROF_6200] = {
		.input          = {{
			.type   = CX88_VMUX_DVB,
		} },
	},
	[CX88_BOARD_PROF_7300] = {
		.input          = {{
			.type   = CX88_VMUX_DVB,
		} },
	},
	[CX88_BOARD_SATTRADE_ST4200] = {
		.input          = {{
			.type   = CX88_VMUX_DVB,
		} },
	},
	[CX88_BOARD_TERRATEC_CINERGY_HT_PCI_MKII] = {
		.input          = { {
			.type   = CX88_VMUX_TELEVISION,
		}, {
			.type   = CX88_VMUX_COMPOSITE1,
		}, {
			.type   = CX88_VMUX_SVIDEO,
		} },
	},
	[CX88_BOARD_HAUPPAUGE_IRONLY] = {
	},
	[CX88_BOARD_WINFAST_DTV1800H] = {
		.input          = {{
			.type   = CX88_VMUX_TELEVISION,
		}, {
			.type   = CX88_VMUX_COMPOSITE1,
		}, {
			.type   = CX88_VMUX_SVIDEO,
		} },
	},
	[CX88_BOARD_WINFAST_DTV1800H_XC4000] = {
		.input		= {{
			.type	= CX88_VMUX_TELEVISION,
		}, {
			.type	= CX88_VMUX_COMPOSITE1,
		}, {
			.type	= CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_WINFAST_DTV2000H_PLUS] = {
		.input		= {{
			.type	= CX88_VMUX_TELEVISION,
		}, {
			.type	= CX88_VMUX_CABLE,
		}, {
			.type	= CX88_VMUX_COMPOSITE1,
		}, {
			.type	= CX88_VMUX_SVIDEO,
		}},
	},
	[CX88_BOARD_PROF_7301] = {
		.input          = { {
			.type   = CX88_VMUX_DVB,
		} },
	},
	[CX88_BOARD_TWINHAN_VP1027_DVBS] = {
		.input          = {{
		       .type   = CX88_VMUX_DVB,
		} },
	},
};
------------------- cut here ------------------------

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Bogus 'Initializer entry defined twice' warnings
  2014-08-29  8:10 Bogus 'Initializer entry defined twice' warnings Hans Verkuil
@ 2014-11-05  7:44 ` Hans Verkuil
  2014-11-05 10:49   ` Christopher Li
  2014-11-12 15:39 ` Christopher Li
  1 sibling, 1 reply; 9+ messages in thread
From: Hans Verkuil @ 2014-11-05  7:44 UTC (permalink / raw)
  To: linux-sparse

Ping!

This is still failing (tested with the latest sparse v0.5.0-35-gc1c3f96
from git://git.kernel.org/pub/scm/devel/sparse/chrisl/sparse.git).

I'd really like to get rid of these spurious sparse warnings.

Regards,

	Hans

On 08/29/2014 10:10 AM, Hans Verkuil wrote:
> The following test source (based on drivers/media/pci/cx88/cx88-cards.c from
> the kernel) gives these sparse warnings:
> 
> cards4.c:447:36: warning: Initializer entry defined twice
> cards4.c:449:19:   also defined here
> cards4.c:456:36: warning: Initializer entry defined twice
> cards4.c:458:19:   also defined here
> cards4.c:611:36: warning: Initializer entry defined twice
> cards4.c:613:19:   also defined here
> cards4.c:620:36: warning: Initializer entry defined twice
> cards4.c:622:19:   also defined here
> cards4.c:629:36: warning: Initializer entry defined twice
> cards4.c:631:20:   also defined here
> cards4.c:638:37: warning: Initializer entry defined twice
> cards4.c:640:20:   also defined here
> cards4.c:611:36: warning: Initializer entry defined twice
> cards4.c:613:19:   also defined here
> cards4.c:620:36: warning: Initializer entry defined twice
> cards4.c:622:19:   also defined here
> cards4.c:629:36: warning: Initializer entry defined twice
> cards4.c:631:20:   also defined here
> cards4.c:638:37: warning: Initializer entry defined twice
> cards4.c:640:20:   also defined here
> cards4.c:675:26: warning: Initializer entry defined twice
> cards4.c:676:26:   also defined here
> cards4.c:727:37: warning: Initializer entry defined twice
> cards4.c:729:20:   also defined here
> cards4.c:736:36: warning: Initializer entry defined twice
> cards4.c:738:20:   also defined here
> cards4.c:824:36: warning: Initializer entry defined twice
> cards4.c:826:20:   also defined here
> cards4.c:815:36: warning: Initializer entry defined twice
> cards4.c:817:20:   also defined here
> cards4.c:824:36: warning: Initializer entry defined twice
> cards4.c:826:20:   also defined here
> cards4.c:815:36: warning: Initializer entry defined twice
> cards4.c:817:20:   also defined here
> 
> These warnings are patently false, and removing a single entry
> (say the first one) will result in a set of warnings for different
> lines. Frankly, it looks what would happen if there is a wrong
> hash table lookup.
> 
> I am using the latest sparse code from
> git://git.kernel.org/pub/scm/devel/sparse/chrisl/sparse.git.
> 
> 
> Regards,
> 
> 	Hans
> 
> ------------------- cut here ------------------------
> #define CX88_BOARD_UNKNOWN                  0
> #define CX88_BOARD_HAUPPAUGE                1
> #define CX88_BOARD_GDI                      2
> #define CX88_BOARD_PIXELVIEW                3
> #define CX88_BOARD_ATI_WONDER_PRO           4
> #define CX88_BOARD_WINFAST2000XP_EXPERT     5
> #define CX88_BOARD_AVERTV_STUDIO_303        6
> #define CX88_BOARD_MSI_TVANYWHERE_MASTER    7
> #define CX88_BOARD_WINFAST_DV2000           8
> #define CX88_BOARD_LEADTEK_PVR2000          9
> #define CX88_BOARD_IODATA_GVVCP3PCI        10
> #define CX88_BOARD_PROLINK_PLAYTVPVR       11
> #define CX88_BOARD_ASUS_PVR_416            12
> #define CX88_BOARD_MSI_TVANYWHERE          13
> #define CX88_BOARD_KWORLD_DVB_T            14
> #define CX88_BOARD_DVICO_FUSIONHDTV_DVB_T1 15
> #define CX88_BOARD_KWORLD_LTV883           16
> #define CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q  17
> #define CX88_BOARD_HAUPPAUGE_DVB_T1        18
> #define CX88_BOARD_CONEXANT_DVB_T1         19
> #define CX88_BOARD_PROVIDEO_PV259          20
> #define CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PLUS 21
> #define CX88_BOARD_PCHDTV_HD3000           22
> #define CX88_BOARD_DNTV_LIVE_DVB_T         23
> #define CX88_BOARD_HAUPPAUGE_ROSLYN        24
> #define CX88_BOARD_DIGITALLOGIC_MEC        25
> #define CX88_BOARD_IODATA_GVBCTV7E         26
> #define CX88_BOARD_PIXELVIEW_PLAYTV_ULTRA_PRO 27
> #define CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_T  28
> #define CX88_BOARD_ADSTECH_DVB_T_PCI          29
> #define CX88_BOARD_TERRATEC_CINERGY_1400_DVB_T1  30
> #define CX88_BOARD_DVICO_FUSIONHDTV_5_GOLD 31
> #define CX88_BOARD_AVERMEDIA_ULTRATV_MC_550 32
> #define CX88_BOARD_KWORLD_VSTREAM_EXPERT_DVD 33
> #define CX88_BOARD_ATI_HDTVWONDER          34
> #define CX88_BOARD_WINFAST_DTV1000         35
> #define CX88_BOARD_AVERTV_303              36
> #define CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1  37
> #define CX88_BOARD_HAUPPAUGE_NOVASE2_S1    38
> #define CX88_BOARD_KWORLD_DVBS_100         39
> #define CX88_BOARD_HAUPPAUGE_HVR1100       40
> #define CX88_BOARD_HAUPPAUGE_HVR1100LP     41
> #define CX88_BOARD_DNTV_LIVE_DVB_T_PRO     42
> #define CX88_BOARD_KWORLD_DVB_T_CX22702    43
> #define CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL 44
> #define CX88_BOARD_KWORLD_HARDWARE_MPEG_TV_XPERT 45
> #define CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_HYBRID 46
> #define CX88_BOARD_PCHDTV_HD5500           47
> #define CX88_BOARD_KWORLD_MCE200_DELUXE    48
> #define CX88_BOARD_PIXELVIEW_PLAYTV_P7000  49
> #define CX88_BOARD_NPGTECH_REALTV_TOP10FM  50
> #define CX88_BOARD_WINFAST_DTV2000H        51
> #define CX88_BOARD_GENIATECH_DVBS          52
> #define CX88_BOARD_HAUPPAUGE_HVR3000       53
> #define CX88_BOARD_NORWOOD_MICRO           54
> #define CX88_BOARD_TE_DTV_250_OEM_SWANN    55
> #define CX88_BOARD_HAUPPAUGE_HVR1300       56
> #define CX88_BOARD_ADSTECH_PTV_390         57
> #define CX88_BOARD_PINNACLE_PCTV_HD_800i   58
> #define CX88_BOARD_DVICO_FUSIONHDTV_5_PCI_NANO 59
> #define CX88_BOARD_PINNACLE_HYBRID_PCTV    60
> #define CX88_BOARD_WINFAST_TV2000_XP_GLOBAL 61
> #define CX88_BOARD_POWERCOLOR_REAL_ANGEL   62
> #define CX88_BOARD_GENIATECH_X8000_MT      63
> #define CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PRO 64
> #define CX88_BOARD_DVICO_FUSIONHDTV_7_GOLD 65
> #define CX88_BOARD_PROLINK_PV_8000GT       66
> #define CX88_BOARD_KWORLD_ATSC_120         67
> #define CX88_BOARD_HAUPPAUGE_HVR4000       68
> #define CX88_BOARD_HAUPPAUGE_HVR4000LITE   69
> #define CX88_BOARD_TEVII_S460              70
> #define CX88_BOARD_OMICOM_SS4_PCI          71
> #define CX88_BOARD_TBS_8920                72
> #define CX88_BOARD_TEVII_S420              73
> #define CX88_BOARD_PROLINK_PV_GLOBAL_XTREME 74
> #define CX88_BOARD_PROF_7300               75
> #define CX88_BOARD_SATTRADE_ST4200         76
> #define CX88_BOARD_TBS_8910                77
> #define CX88_BOARD_PROF_6200               78
> #define CX88_BOARD_TERRATEC_CINERGY_HT_PCI_MKII 79
> #define CX88_BOARD_HAUPPAUGE_IRONLY        80
> #define CX88_BOARD_WINFAST_DTV1800H        81
> #define CX88_BOARD_WINFAST_DTV2000H_J      82
> #define CX88_BOARD_PROF_7301               83
> #define CX88_BOARD_SAMSUNG_SMT_7020        84
> #define CX88_BOARD_TWINHAN_VP1027_DVBS     85
> #define CX88_BOARD_TEVII_S464              86
> #define CX88_BOARD_WINFAST_DTV2000H_PLUS   87
> #define CX88_BOARD_WINFAST_DTV1800H_XC4000 88
> #define CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F36 89
> #define CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F43 90
> 
> #define MAX_CX88_INPUT 8
> 
> enum cx88_itype {
> 	CX88_VMUX_COMPOSITE1 = 1,
> 	CX88_VMUX_COMPOSITE2,
> 	CX88_VMUX_COMPOSITE3,
> 	CX88_VMUX_COMPOSITE4,
> 	CX88_VMUX_SVIDEO,
> 	CX88_VMUX_TELEVISION,
> 	CX88_VMUX_CABLE,
> 	CX88_VMUX_DVB,
> 	CX88_VMUX_DEBUG,
> 	CX88_RADIO,
> };
> 
> struct cx88_input {
> 	enum cx88_itype type;
> };
> 
> struct cx88_board {
> 	struct cx88_input       input[MAX_CX88_INPUT];
> };
> 
> static const struct cx88_board cx88_boards[] = {
> 	[CX88_BOARD_UNKNOWN] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE2,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE3,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE4,
> 		}},
> 	},
> 	[CX88_BOARD_HAUPPAUGE] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_DEBUG,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_GDI] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_PIXELVIEW] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_ATI_WONDER_PRO] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_WINFAST2000XP_EXPERT] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_AVERTV_STUDIO_303] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_MSI_TVANYWHERE_MASTER] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_WINFAST_DV2000] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_LEADTEK_PVR2000] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_IODATA_GVVCP3PCI] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE2,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_PROLINK_PLAYTVPVR] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_ASUS_PVR_416] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_MSI_TVANYWHERE] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_KWORLD_DVB_T] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_DVICO_FUSIONHDTV_DVB_T1] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_KWORLD_LTV883] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_DEBUG,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_CABLE,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_HAUPPAUGE_DVB_T1] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_DVB,
> 		}},
> 	},
> 	[CX88_BOARD_CONEXANT_DVB_T1] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_DVB,
> 		}},
> 	},
> 	[CX88_BOARD_PROVIDEO_PV259] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		}},
> 	},
> 	[CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PLUS] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_DNTV_LIVE_DVB_T] = {
> 		.input		= {{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_PCHDTV_HD3000] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_HAUPPAUGE_ROSLYN] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_DEBUG,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_DIGITALLOGIC_MEC] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_IODATA_GVBCTV7E] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}}
> 	},
> 	[CX88_BOARD_PIXELVIEW_PLAYTV_ULTRA_PRO] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_T] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_ADSTECH_DVB_T_PCI] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_TERRATEC_CINERGY_1400_DVB_T1] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_DVB,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_DVICO_FUSIONHDTV_5_GOLD] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_AVERMEDIA_ULTRATV_MC_550] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		},{
> 			.type   = CX88_VMUX_TELEVISION,
> 		}},
> 	},
> 	[CX88_BOARD_KWORLD_VSTREAM_EXPERT_DVD] = {
> 		 .input          = {{
> 			 .type   = CX88_VMUX_COMPOSITE1,
> 		 },{
> 			 .type   = CX88_VMUX_SVIDEO,
> 		 }},
> 	},
> 	[CX88_BOARD_ATI_HDTVWONDER] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_WINFAST_DTV1000] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_DVB,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_AVERTV_303] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1] = {
> 		.input		= {{
> 			.type	= CX88_VMUX_DVB,
> 		},{
> 			.type	= CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type	= CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_HAUPPAUGE_NOVASE2_S1] = {
> 		.input		= {{
> 			.type	= CX88_VMUX_DVB,
> 		}},
> 	},
> 	[CX88_BOARD_KWORLD_DVBS_100] = {
> 		.input		= {{
> 			.type	= CX88_VMUX_DVB,
> 		},{
> 			.type	= CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type	= CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_HAUPPAUGE_HVR1100] = {
> 		.input		= {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type	= CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type	= CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_HAUPPAUGE_HVR1100LP] = {
> 		.input		= {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type	= CX88_VMUX_COMPOSITE1,
> 		}},
> 	},
> 	[CX88_BOARD_DNTV_LIVE_DVB_T_PRO] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_KWORLD_DVB_T_CX22702] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		 },{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_KWORLD_HARDWARE_MPEG_TV_XPERT] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_HYBRID] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_PCHDTV_HD5500] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_KWORLD_MCE200_DELUXE] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		}},
> 	},
> 	[CX88_BOARD_PIXELVIEW_PLAYTV_P7000] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		}},
> 	},
> 	[CX88_BOARD_NPGTECH_REALTV_TOP10FM] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_WINFAST_DTV2000H] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		}, {
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		}, {
> 			.type   = CX88_VMUX_COMPOSITE2,
> 		}, {
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_WINFAST_DTV2000H_J] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_GENIATECH_DVBS] = {
> 		.input  = {{
> 			.type  = CX88_VMUX_DVB,
> 		},{
> 			.type  = CX88_VMUX_COMPOSITE1,
> 		}},
> 	},
> 	[CX88_BOARD_HAUPPAUGE_HVR3000] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_NORWOOD_MICRO] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_TE_DTV_250_OEM_SWANN] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_HAUPPAUGE_HVR1300] = {
> 		.input		= {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type	= CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type	= CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_SAMSUNG_SMT_7020] = {
> 		.input		= { {
> 			.type	= CX88_VMUX_DVB,
> 		} },
> 	},
> 	[CX88_BOARD_ADSTECH_PTV_390] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_DEBUG,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_PINNACLE_PCTV_HD_800i] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_DVICO_FUSIONHDTV_5_PCI_NANO] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		}, {
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		}, {
> 			.type   = CX88_VMUX_SVIDEO,
> 		} },
> 	},
> 	[CX88_BOARD_PINNACLE_HYBRID_PCTV] = {
> 		.input          = { {
> 			.type   = CX88_VMUX_TELEVISION,
> 		}, {
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		}, {
> 			.type   = CX88_VMUX_SVIDEO,
> 		} },
> 	},
> 	[CX88_BOARD_WINFAST_TV2000_XP_GLOBAL] = {
> 		.input          = { {
> 			.type   = CX88_VMUX_TELEVISION,
> 		}, {
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		}, {
> 			.type   = CX88_VMUX_SVIDEO,
> 		} },
> 	},
> 	[CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F36] = {
> 		.input          = { {
> 			.type   = CX88_VMUX_TELEVISION,
> 		}, {
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		}, {
> 			.type   = CX88_VMUX_SVIDEO,
> 		} },
> 	},
> 	[CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F43] = {
> 		.input          = { {
> 			.type   = CX88_VMUX_TELEVISION,
> 		}, {
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		}, {
> 			.type   = CX88_VMUX_SVIDEO,
> 		} },
> 	},
> 	[CX88_BOARD_POWERCOLOR_REAL_ANGEL] = {
> 		.input          = { {
> 			.type   = CX88_VMUX_DEBUG,
> 			.type   = CX88_VMUX_TELEVISION,
> 		}, {
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		}, {
> 			.type   = CX88_VMUX_SVIDEO,
> 		} },
> 	},
> 	[CX88_BOARD_GENIATECH_X8000_MT] = {
> 		.input          = { {
> 			.type   = CX88_VMUX_TELEVISION,
> 		}, {
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		}, {
> 			.type   = CX88_VMUX_SVIDEO,
> 		} },
> 	},
> 	[CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PRO] = {
> 		.input          = { {
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		}, {
> 			.type   = CX88_VMUX_SVIDEO,
> 		} },
> 	},
> 	[CX88_BOARD_DVICO_FUSIONHDTV_7_GOLD] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		},{
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		},{
> 			.type   = CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_PROLINK_PV_8000GT] = {
> 		.input          = { {
> 			.type   = CX88_VMUX_TELEVISION,
> 		}, {
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		}, {
> 			.type   = CX88_VMUX_SVIDEO,
> 		} },
> 	},
> 	[CX88_BOARD_PROLINK_PV_GLOBAL_XTREME] = {
> 		.input          = { {
> 			.type   = CX88_VMUX_TELEVISION,
> 		}, {
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		}, {
> 			.type   = CX88_VMUX_SVIDEO,
> 		} },
> 	},
> 	[CX88_BOARD_KWORLD_ATSC_120] = {
> 		.input          = { {
> 			.type   = CX88_VMUX_TELEVISION,
> 		}, {
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		}, {
> 			.type   = CX88_VMUX_SVIDEO,
> 		} },
> 	},
> 	[CX88_BOARD_HAUPPAUGE_HVR4000] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		}, {
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		}, {
> 			.type   = CX88_VMUX_SVIDEO,
> 		} },
> 	},
> 	[CX88_BOARD_HAUPPAUGE_HVR4000LITE] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_DVB,
> 		} },
> 	},
> 	[CX88_BOARD_TEVII_S420] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_DVB,
> 		} },
> 	},
> 	[CX88_BOARD_TEVII_S460] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_DVB,
> 		} },
> 	},
> 	[CX88_BOARD_TEVII_S464] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_DVB,
> 		} },
> 	},
> 	[CX88_BOARD_OMICOM_SS4_PCI] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_DVB,
> 		} },
> 	},
> 	[CX88_BOARD_TBS_8910] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_DVB,
> 		} },
> 	},
> 	[CX88_BOARD_TBS_8920] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_DVB,
> 		} },
> 	},
> 	[CX88_BOARD_PROF_6200] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_DVB,
> 		} },
> 	},
> 	[CX88_BOARD_PROF_7300] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_DVB,
> 		} },
> 	},
> 	[CX88_BOARD_SATTRADE_ST4200] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_DVB,
> 		} },
> 	},
> 	[CX88_BOARD_TERRATEC_CINERGY_HT_PCI_MKII] = {
> 		.input          = { {
> 			.type   = CX88_VMUX_TELEVISION,
> 		}, {
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		}, {
> 			.type   = CX88_VMUX_SVIDEO,
> 		} },
> 	},
> 	[CX88_BOARD_HAUPPAUGE_IRONLY] = {
> 	},
> 	[CX88_BOARD_WINFAST_DTV1800H] = {
> 		.input          = {{
> 			.type   = CX88_VMUX_TELEVISION,
> 		}, {
> 			.type   = CX88_VMUX_COMPOSITE1,
> 		}, {
> 			.type   = CX88_VMUX_SVIDEO,
> 		} },
> 	},
> 	[CX88_BOARD_WINFAST_DTV1800H_XC4000] = {
> 		.input		= {{
> 			.type	= CX88_VMUX_TELEVISION,
> 		}, {
> 			.type	= CX88_VMUX_COMPOSITE1,
> 		}, {
> 			.type	= CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_WINFAST_DTV2000H_PLUS] = {
> 		.input		= {{
> 			.type	= CX88_VMUX_TELEVISION,
> 		}, {
> 			.type	= CX88_VMUX_CABLE,
> 		}, {
> 			.type	= CX88_VMUX_COMPOSITE1,
> 		}, {
> 			.type	= CX88_VMUX_SVIDEO,
> 		}},
> 	},
> 	[CX88_BOARD_PROF_7301] = {
> 		.input          = { {
> 			.type   = CX88_VMUX_DVB,
> 		} },
> 	},
> 	[CX88_BOARD_TWINHAN_VP1027_DVBS] = {
> 		.input          = {{
> 		       .type   = CX88_VMUX_DVB,
> 		} },
> 	},
> };
> ------------------- cut here ------------------------
> --
> To unsubscribe from this list: send the line "unsubscribe linux-sparse" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Bogus 'Initializer entry defined twice' warnings
  2014-11-05  7:44 ` Hans Verkuil
@ 2014-11-05 10:49   ` Christopher Li
  0 siblings, 0 replies; 9+ messages in thread
From: Christopher Li @ 2014-11-05 10:49 UTC (permalink / raw)
  To: Hans Verkuil; +Cc: Linux-Sparse

On Wed, Nov 5, 2014 at 3:44 PM, Hans Verkuil <hverkuil@xs4all.nl> wrote:
> Ping!
>
> This is still failing (tested with the latest sparse v0.5.0-35-gc1c3f96
> from git://git.kernel.org/pub/scm/devel/sparse/chrisl/sparse.git).
>
> I'd really like to get rid of these spurious sparse warnings.

Sorry I did not know this warning still exist. There have been some
fix for similar
warnings. I just confirm that your example reproduce the warning in my sparse
tree.

I will take a look.

Thanks

Chris

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Bogus 'Initializer entry defined twice' warnings
  2014-08-29  8:10 Bogus 'Initializer entry defined twice' warnings Hans Verkuil
  2014-11-05  7:44 ` Hans Verkuil
@ 2014-11-12 15:39 ` Christopher Li
  2014-12-05 13:39   ` Hans Verkuil
  1 sibling, 1 reply; 9+ messages in thread
From: Christopher Li @ 2014-11-12 15:39 UTC (permalink / raw)
  To: Hans Verkuil; +Cc: Linux-Sparse

On Fri, Aug 29, 2014 at 4:10 PM, Hans Verkuil <hverkuil@xs4all.nl> wrote:
> The following test source (based on drivers/media/pci/cx88/cx88-cards.c from
> the kernel) gives these sparse warnings:
>
> cards4.c:447:36: warning: Initializer entry defined twice
> cards4.c:449:19:   also defined here
>
> I am using the latest sparse code from
> git://git.kernel.org/pub/scm/devel/sparse/chrisl/sparse.git.

Thanks for the bug report. It has been puzzling for me as well.
It seems there is some duplicate entry in the expression list
for the very long initializer. The duplicate entry first show up after
the expand_symbol phase. The bug will disappear if the list is
sorter.

I have narrow it down to the sort_list() function.
If we turn on " #define PARANOIA" in sort.c.
Sparse can trigger assert fail:

sparse: sort.c:89: verify_seq_sorted: Assertion `cmp (a, b) <= 0' failed.
Aborted (core dumped)

Still need more work to fix it.

Chris

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Bogus 'Initializer entry defined twice' warnings
  2014-11-12 15:39 ` Christopher Li
@ 2014-12-05 13:39   ` Hans Verkuil
  2014-12-09  1:11     ` Christopher Li
  2014-12-12  4:32     ` Christopher Li
  0 siblings, 2 replies; 9+ messages in thread
From: Hans Verkuil @ 2014-12-05 13:39 UTC (permalink / raw)
  To: Christopher Li; +Cc: Linux-Sparse

Hi Chris,

On 11/12/2014 04:39 PM, Christopher Li wrote:
> On Fri, Aug 29, 2014 at 4:10 PM, Hans Verkuil <hverkuil@xs4all.nl> wrote:
>> The following test source (based on drivers/media/pci/cx88/cx88-cards.c from
>> the kernel) gives these sparse warnings:
>>
>> cards4.c:447:36: warning: Initializer entry defined twice
>> cards4.c:449:19:   also defined here
>>
>> I am using the latest sparse code from
>> git://git.kernel.org/pub/scm/devel/sparse/chrisl/sparse.git.
> 
> Thanks for the bug report. It has been puzzling for me as well.
> It seems there is some duplicate entry in the expression list
> for the very long initializer. The duplicate entry first show up after
> the expand_symbol phase. The bug will disappear if the list is
> sorter.
> 
> I have narrow it down to the sort_list() function.
> If we turn on " #define PARANOIA" in sort.c.
> Sparse can trigger assert fail:
> 
> sparse: sort.c:89: verify_seq_sorted: Assertion `cmp (a, b) <= 0' failed.
> Aborted (core dumped)
> 
> Still need more work to fix it.

Any updates on this?

Thanks,

	Hans

> 
> Chris
> --
> To unsubscribe from this list: send the line "unsubscribe linux-sparse" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Bogus 'Initializer entry defined twice' warnings
  2014-12-05 13:39   ` Hans Verkuil
@ 2014-12-09  1:11     ` Christopher Li
  2014-12-12  4:32     ` Christopher Li
  1 sibling, 0 replies; 9+ messages in thread
From: Christopher Li @ 2014-12-09  1:11 UTC (permalink / raw)
  To: Hans Verkuil; +Cc: Linux-Sparse

On Fri, Dec 5, 2014 at 9:39 PM, Hans Verkuil <hverkuil@xs4all.nl> wrote:
> Hi Chris,
>
> Any updates on this?
>

Well, I haven't fully understand the code that merge two sorted list in place.
It is that code that cause the sorting error. One quick and dirty way to fix it
is just convert the list with more than one bucket into an array then
use qsort()
on it. That will require modify the compare function and copy the list back from
the array.

Chris

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Bogus 'Initializer entry defined twice' warnings
  2014-12-05 13:39   ` Hans Verkuil
  2014-12-09  1:11     ` Christopher Li
@ 2014-12-12  4:32     ` Christopher Li
  2014-12-12  8:04       ` Hans Verkuil
  2014-12-12  8:12       ` Josh Triplett
  1 sibling, 2 replies; 9+ messages in thread
From: Christopher Li @ 2014-12-12  4:32 UTC (permalink / raw)
  To: Hans Verkuil; +Cc: Linux-Sparse, Linus Torvalds

On Fri, Dec 5, 2014 at 9:39 PM, Hans Verkuil <hverkuil@xs4all.nl> wrote:
>> Still need more work to fix it.
>
> Any updates on this?
>

The search is over.

    Ptr list sorting should use memmove instead of memcpy

    The target buffer is overlapped with source buffer.
    This cause the duplicate entry warning reported by Hans.

    Reported-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Christopher Li <sparse@chrisli.org>

diff --git a/sort.c b/sort.c
index afd7184..430ba44 100644
--- a/sort.c
+++ b/sort.c
@@ -99,7 +99,7 @@ static void verify_seq_sorted (struct ptr_list *l, int n,
        assert (nbuf >= nr);                                    \
        memcpy ((b)->list, buffer, nr * sizeof (void *));       \
        nbuf -= nr;                                             \
-       memcpy (buffer, buffer + nr, nbuf * sizeof (void *));   \
+       memmove (buffer, buffer + nr, nbuf * sizeof (void *));  \
   } while (0)


Chris

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: Bogus 'Initializer entry defined twice' warnings
  2014-12-12  4:32     ` Christopher Li
@ 2014-12-12  8:04       ` Hans Verkuil
  2014-12-12  8:12       ` Josh Triplett
  1 sibling, 0 replies; 9+ messages in thread
From: Hans Verkuil @ 2014-12-12  8:04 UTC (permalink / raw)
  To: Christopher Li; +Cc: Linux-Sparse, Linus Torvalds

On 12/12/2014 05:32 AM, Christopher Li wrote:
> On Fri, Dec 5, 2014 at 9:39 PM, Hans Verkuil <hverkuil@xs4all.nl> wrote:
>>> Still need more work to fix it.
>>
>> Any updates on this?
>>
> 
> The search is over.
> 
>     Ptr list sorting should use memmove instead of memcpy
> 
>     The target buffer is overlapped with source buffer.
>     This cause the duplicate entry warning reported by Hans.

Fantastic! This fixes the problem, now I can concentrate on getting rid
of the last few remaining sparse warnings in drivers/media.

Regards,

	Hans

> 
>     Reported-by: Hans Verkuil <hverkuil@xs4all.nl>
>     Signed-off-by: Christopher Li <sparse@chrisli.org>
> 
> diff --git a/sort.c b/sort.c
> index afd7184..430ba44 100644
> --- a/sort.c
> +++ b/sort.c
> @@ -99,7 +99,7 @@ static void verify_seq_sorted (struct ptr_list *l, int n,
>         assert (nbuf >= nr);                                    \
>         memcpy ((b)->list, buffer, nr * sizeof (void *));       \
>         nbuf -= nr;                                             \
> -       memcpy (buffer, buffer + nr, nbuf * sizeof (void *));   \
> +       memmove (buffer, buffer + nr, nbuf * sizeof (void *));  \
>    } while (0)
> 
> 
> Chris
> 


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Bogus 'Initializer entry defined twice' warnings
  2014-12-12  4:32     ` Christopher Li
  2014-12-12  8:04       ` Hans Verkuil
@ 2014-12-12  8:12       ` Josh Triplett
  1 sibling, 0 replies; 9+ messages in thread
From: Josh Triplett @ 2014-12-12  8:12 UTC (permalink / raw)
  To: Christopher Li; +Cc: Hans Verkuil, Linux-Sparse, Linus Torvalds

On Fri, Dec 12, 2014 at 12:32:47PM +0800, Christopher Li wrote:
> On Fri, Dec 5, 2014 at 9:39 PM, Hans Verkuil <hverkuil@xs4all.nl> wrote:
> >> Still need more work to fix it.
> >
> > Any updates on this?
> >
> 
> The search is over.
> 
>     Ptr list sorting should use memmove instead of memcpy
> 
>     The target buffer is overlapped with source buffer.
>     This cause the duplicate entry warning reported by Hans.
> 
>     Reported-by: Hans Verkuil <hverkuil@xs4all.nl>
>     Signed-off-by: Christopher Li <sparse@chrisli.org>
> 
> diff --git a/sort.c b/sort.c
> index afd7184..430ba44 100644
> --- a/sort.c
> +++ b/sort.c
> @@ -99,7 +99,7 @@ static void verify_seq_sorted (struct ptr_list *l, int n,
>         assert (nbuf >= nr);                                    \
>         memcpy ((b)->list, buffer, nr * sizeof (void *));       \
>         nbuf -= nr;                                             \
> -       memcpy (buffer, buffer + nr, nbuf * sizeof (void *));   \
> +       memmove (buffer, buffer + nr, nbuf * sizeof (void *));  \
>    } while (0)

Great catch, Chris!

- Josh Triplett

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2014-12-12  8:12 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-08-29  8:10 Bogus 'Initializer entry defined twice' warnings Hans Verkuil
2014-11-05  7:44 ` Hans Verkuil
2014-11-05 10:49   ` Christopher Li
2014-11-12 15:39 ` Christopher Li
2014-12-05 13:39   ` Hans Verkuil
2014-12-09  1:11     ` Christopher Li
2014-12-12  4:32     ` Christopher Li
2014-12-12  8:04       ` Hans Verkuil
2014-12-12  8:12       ` Josh Triplett

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).