All of lore.kernel.org
 help / color / mirror / Atom feed
* [vfs:work.regset 9/9] arch/s390/kernel/ptrace.c:1306:11: error: initialization of 'int (*)(struct task_struct *, const struct user_regset *, struct membuf)' from incompatible pointer type 'int (*)(struct task_struct *, const struct user_regset *, unsigned int,  struct membuf)'
@ 2020-05-13  6:32 ` kbuild test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kbuild test robot @ 2020-05-13  6:32 UTC (permalink / raw)
  To: Al Viro; +Cc: kbuild-all, linux-fsdevel

[-- Attachment #1: Type: text/plain, Size: 6887 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git work.regset
head:   53a620bc6368a2da4a4c0c699b76f0bf1b4205e7
commit: 53a620bc6368a2da4a4c0c699b76f0bf1b4205e7 [9/9] s390: switch to ->get2()
config: s390-randconfig-r034-20200513 (attached as .config)
compiler: s390-linux-gcc (GCC) 9.3.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        git checkout 53a620bc6368a2da4a4c0c699b76f0bf1b4205e7
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day GCC_VERSION=9.3.0 make.cross ARCH=s390 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> arch/s390/kernel/ptrace.c:1306:11: error: initialization of 'int (*)(struct task_struct *, const struct user_regset *, struct membuf)' from incompatible pointer type 'int (*)(struct task_struct *, const struct user_regset *, unsigned int,  struct membuf)' [-Werror=incompatible-pointer-types]
1306 |   .get2 = s390_fpregs_get,
|           ^~~~~~~~~~~~~~~
arch/s390/kernel/ptrace.c:1306:11: note: (near initialization for 's390_regsets[1].get2')
arch/s390/kernel/ptrace.c: In function 's390_compat_regs_high_get':
>> arch/s390/kernel/ptrace.c:1441:14: error: 'n' undeclared (first use in this function)
1441 |  for (i = 0; n < NUM_GPRS; i++, gprs_high += 2)
|              ^
arch/s390/kernel/ptrace.c:1441:14: note: each undeclared identifier is reported only once for each function it appears in
arch/s390/kernel/ptrace.c: At top level:
arch/s390/kernel/ptrace.c:1510:11: error: initialization of 'int (*)(struct task_struct *, const struct user_regset *, struct membuf)' from incompatible pointer type 'int (*)(struct task_struct *, const struct user_regset *, unsigned int,  struct membuf)' [-Werror=incompatible-pointer-types]
1510 |   .get2 = s390_fpregs_get,
|           ^~~~~~~~~~~~~~~
arch/s390/kernel/ptrace.c:1510:11: note: (near initialization for 's390_compat_regsets[1].get2')
cc1: some warnings being treated as errors

vim +1306 arch/s390/kernel/ptrace.c

  1291	
  1292	static const struct user_regset s390_regsets[] = {
  1293		{
  1294			.core_note_type = NT_PRSTATUS,
  1295			.n = sizeof(s390_regs) / sizeof(long),
  1296			.size = sizeof(long),
  1297			.align = sizeof(long),
  1298			.get2 = s390_regs_get,
  1299			.set = s390_regs_set,
  1300		},
  1301		{
  1302			.core_note_type = NT_PRFPREG,
  1303			.n = sizeof(s390_fp_regs) / sizeof(long),
  1304			.size = sizeof(long),
  1305			.align = sizeof(long),
> 1306			.get2 = s390_fpregs_get,
  1307			.set = s390_fpregs_set,
  1308		},
  1309		{
  1310			.core_note_type = NT_S390_SYSTEM_CALL,
  1311			.n = 1,
  1312			.size = sizeof(unsigned int),
  1313			.align = sizeof(unsigned int),
  1314			.get2 = s390_system_call_get,
  1315			.set = s390_system_call_set,
  1316		},
  1317		{
  1318			.core_note_type = NT_S390_LAST_BREAK,
  1319			.n = 1,
  1320			.size = sizeof(long),
  1321			.align = sizeof(long),
  1322			.get2 = s390_last_break_get,
  1323			.set = s390_last_break_set,
  1324		},
  1325		{
  1326			.core_note_type = NT_S390_TDB,
  1327			.n = 1,
  1328			.size = 256,
  1329			.align = 1,
  1330			.get2 = s390_tdb_get,
  1331			.set = s390_tdb_set,
  1332		},
  1333		{
  1334			.core_note_type = NT_S390_VXRS_LOW,
  1335			.n = __NUM_VXRS_LOW,
  1336			.size = sizeof(__u64),
  1337			.align = sizeof(__u64),
  1338			.get2 = s390_vxrs_low_get,
  1339			.set = s390_vxrs_low_set,
  1340		},
  1341		{
  1342			.core_note_type = NT_S390_VXRS_HIGH,
  1343			.n = __NUM_VXRS_HIGH,
  1344			.size = sizeof(__vector128),
  1345			.align = sizeof(__vector128),
  1346			.get2 = s390_vxrs_high_get,
  1347			.set = s390_vxrs_high_set,
  1348		},
  1349		{
  1350			.core_note_type = NT_S390_GS_CB,
  1351			.n = sizeof(struct gs_cb) / sizeof(__u64),
  1352			.size = sizeof(__u64),
  1353			.align = sizeof(__u64),
  1354			.get2 = s390_gs_cb_get,
  1355			.set = s390_gs_cb_set,
  1356		},
  1357		{
  1358			.core_note_type = NT_S390_GS_BC,
  1359			.n = sizeof(struct gs_cb) / sizeof(__u64),
  1360			.size = sizeof(__u64),
  1361			.align = sizeof(__u64),
  1362			.get2 = s390_gs_bc_get,
  1363			.set = s390_gs_bc_set,
  1364		},
  1365		{
  1366			.core_note_type = NT_S390_RI_CB,
  1367			.n = sizeof(struct runtime_instr_cb) / sizeof(__u64),
  1368			.size = sizeof(__u64),
  1369			.align = sizeof(__u64),
  1370			.get2 = s390_runtime_instr_get,
  1371			.set = s390_runtime_instr_set,
  1372		},
  1373	};
  1374	
  1375	static const struct user_regset_view user_s390_view = {
  1376		.name = UTS_MACHINE,
  1377		.e_machine = EM_S390,
  1378		.regsets = s390_regsets,
  1379		.n = ARRAY_SIZE(s390_regsets)
  1380	};
  1381	
  1382	#ifdef CONFIG_COMPAT
  1383	static int s390_compat_regs_get(struct task_struct *target,
  1384					const struct user_regset *regset,
  1385					struct membuf to)
  1386	{
  1387		unsigned n;
  1388	
  1389		if (target == current)
  1390			save_access_regs(target->thread.acrs);
  1391	
  1392		for (n = 0; n < sizeof(s390_compat_regs); n += sizeof(compat_ulong_t))
  1393			membuf_store(&to, __peek_user_compat(target, n));
  1394		return 0;
  1395	}
  1396	
  1397	static int s390_compat_regs_set(struct task_struct *target,
  1398					const struct user_regset *regset,
  1399					unsigned int pos, unsigned int count,
  1400					const void *kbuf, const void __user *ubuf)
  1401	{
  1402		int rc = 0;
  1403	
  1404		if (target == current)
  1405			save_access_regs(target->thread.acrs);
  1406	
  1407		if (kbuf) {
  1408			const compat_ulong_t *k = kbuf;
  1409			while (count > 0 && !rc) {
  1410				rc = __poke_user_compat(target, pos, *k++);
  1411				count -= sizeof(*k);
  1412				pos += sizeof(*k);
  1413			}
  1414		} else {
  1415			const compat_ulong_t  __user *u = ubuf;
  1416			while (count > 0 && !rc) {
  1417				compat_ulong_t word;
  1418				rc = __get_user(word, u++);
  1419				if (rc)
  1420					break;
  1421				rc = __poke_user_compat(target, pos, word);
  1422				count -= sizeof(*u);
  1423				pos += sizeof(*u);
  1424			}
  1425		}
  1426	
  1427		if (rc == 0 && target == current)
  1428			restore_access_regs(target->thread.acrs);
  1429	
  1430		return rc;
  1431	}
  1432	
  1433	static int s390_compat_regs_high_get(struct task_struct *target,
  1434					     const struct user_regset *regset,
  1435					     struct membuf to)
  1436	{
  1437		compat_ulong_t *gprs_high;
  1438		int i;
  1439	
  1440		gprs_high = (compat_ulong_t *)task_pt_regs(target)->gprs;
> 1441		for (i = 0; n < NUM_GPRS; i++, gprs_high += 2)
  1442			membuf_store(&to, *gprs_high);
  1443		return 0;
  1444	}
  1445	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 28408 bytes --]

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

* [vfs:work.regset 9/9] arch/s390/kernel/ptrace.c:1306:11: error: initialization of 'int (*)(struct task_struct *, const struct user_regset *, struct membuf)' from incompatible pointer type 'int (*)(struct task_struct *, const struct user_regset *, unsigned int, struct membuf)'
@ 2020-05-13  6:32 ` kbuild test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kbuild test robot @ 2020-05-13  6:32 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 7081 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git work.regset
head:   53a620bc6368a2da4a4c0c699b76f0bf1b4205e7
commit: 53a620bc6368a2da4a4c0c699b76f0bf1b4205e7 [9/9] s390: switch to ->get2()
config: s390-randconfig-r034-20200513 (attached as .config)
compiler: s390-linux-gcc (GCC) 9.3.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        git checkout 53a620bc6368a2da4a4c0c699b76f0bf1b4205e7
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day GCC_VERSION=9.3.0 make.cross ARCH=s390 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> arch/s390/kernel/ptrace.c:1306:11: error: initialization of 'int (*)(struct task_struct *, const struct user_regset *, struct membuf)' from incompatible pointer type 'int (*)(struct task_struct *, const struct user_regset *, unsigned int,  struct membuf)' [-Werror=incompatible-pointer-types]
1306 |   .get2 = s390_fpregs_get,
|           ^~~~~~~~~~~~~~~
arch/s390/kernel/ptrace.c:1306:11: note: (near initialization for 's390_regsets[1].get2')
arch/s390/kernel/ptrace.c: In function 's390_compat_regs_high_get':
>> arch/s390/kernel/ptrace.c:1441:14: error: 'n' undeclared (first use in this function)
1441 |  for (i = 0; n < NUM_GPRS; i++, gprs_high += 2)
|              ^
arch/s390/kernel/ptrace.c:1441:14: note: each undeclared identifier is reported only once for each function it appears in
arch/s390/kernel/ptrace.c: At top level:
arch/s390/kernel/ptrace.c:1510:11: error: initialization of 'int (*)(struct task_struct *, const struct user_regset *, struct membuf)' from incompatible pointer type 'int (*)(struct task_struct *, const struct user_regset *, unsigned int,  struct membuf)' [-Werror=incompatible-pointer-types]
1510 |   .get2 = s390_fpregs_get,
|           ^~~~~~~~~~~~~~~
arch/s390/kernel/ptrace.c:1510:11: note: (near initialization for 's390_compat_regsets[1].get2')
cc1: some warnings being treated as errors

vim +1306 arch/s390/kernel/ptrace.c

  1291	
  1292	static const struct user_regset s390_regsets[] = {
  1293		{
  1294			.core_note_type = NT_PRSTATUS,
  1295			.n = sizeof(s390_regs) / sizeof(long),
  1296			.size = sizeof(long),
  1297			.align = sizeof(long),
  1298			.get2 = s390_regs_get,
  1299			.set = s390_regs_set,
  1300		},
  1301		{
  1302			.core_note_type = NT_PRFPREG,
  1303			.n = sizeof(s390_fp_regs) / sizeof(long),
  1304			.size = sizeof(long),
  1305			.align = sizeof(long),
> 1306			.get2 = s390_fpregs_get,
  1307			.set = s390_fpregs_set,
  1308		},
  1309		{
  1310			.core_note_type = NT_S390_SYSTEM_CALL,
  1311			.n = 1,
  1312			.size = sizeof(unsigned int),
  1313			.align = sizeof(unsigned int),
  1314			.get2 = s390_system_call_get,
  1315			.set = s390_system_call_set,
  1316		},
  1317		{
  1318			.core_note_type = NT_S390_LAST_BREAK,
  1319			.n = 1,
  1320			.size = sizeof(long),
  1321			.align = sizeof(long),
  1322			.get2 = s390_last_break_get,
  1323			.set = s390_last_break_set,
  1324		},
  1325		{
  1326			.core_note_type = NT_S390_TDB,
  1327			.n = 1,
  1328			.size = 256,
  1329			.align = 1,
  1330			.get2 = s390_tdb_get,
  1331			.set = s390_tdb_set,
  1332		},
  1333		{
  1334			.core_note_type = NT_S390_VXRS_LOW,
  1335			.n = __NUM_VXRS_LOW,
  1336			.size = sizeof(__u64),
  1337			.align = sizeof(__u64),
  1338			.get2 = s390_vxrs_low_get,
  1339			.set = s390_vxrs_low_set,
  1340		},
  1341		{
  1342			.core_note_type = NT_S390_VXRS_HIGH,
  1343			.n = __NUM_VXRS_HIGH,
  1344			.size = sizeof(__vector128),
  1345			.align = sizeof(__vector128),
  1346			.get2 = s390_vxrs_high_get,
  1347			.set = s390_vxrs_high_set,
  1348		},
  1349		{
  1350			.core_note_type = NT_S390_GS_CB,
  1351			.n = sizeof(struct gs_cb) / sizeof(__u64),
  1352			.size = sizeof(__u64),
  1353			.align = sizeof(__u64),
  1354			.get2 = s390_gs_cb_get,
  1355			.set = s390_gs_cb_set,
  1356		},
  1357		{
  1358			.core_note_type = NT_S390_GS_BC,
  1359			.n = sizeof(struct gs_cb) / sizeof(__u64),
  1360			.size = sizeof(__u64),
  1361			.align = sizeof(__u64),
  1362			.get2 = s390_gs_bc_get,
  1363			.set = s390_gs_bc_set,
  1364		},
  1365		{
  1366			.core_note_type = NT_S390_RI_CB,
  1367			.n = sizeof(struct runtime_instr_cb) / sizeof(__u64),
  1368			.size = sizeof(__u64),
  1369			.align = sizeof(__u64),
  1370			.get2 = s390_runtime_instr_get,
  1371			.set = s390_runtime_instr_set,
  1372		},
  1373	};
  1374	
  1375	static const struct user_regset_view user_s390_view = {
  1376		.name = UTS_MACHINE,
  1377		.e_machine = EM_S390,
  1378		.regsets = s390_regsets,
  1379		.n = ARRAY_SIZE(s390_regsets)
  1380	};
  1381	
  1382	#ifdef CONFIG_COMPAT
  1383	static int s390_compat_regs_get(struct task_struct *target,
  1384					const struct user_regset *regset,
  1385					struct membuf to)
  1386	{
  1387		unsigned n;
  1388	
  1389		if (target == current)
  1390			save_access_regs(target->thread.acrs);
  1391	
  1392		for (n = 0; n < sizeof(s390_compat_regs); n += sizeof(compat_ulong_t))
  1393			membuf_store(&to, __peek_user_compat(target, n));
  1394		return 0;
  1395	}
  1396	
  1397	static int s390_compat_regs_set(struct task_struct *target,
  1398					const struct user_regset *regset,
  1399					unsigned int pos, unsigned int count,
  1400					const void *kbuf, const void __user *ubuf)
  1401	{
  1402		int rc = 0;
  1403	
  1404		if (target == current)
  1405			save_access_regs(target->thread.acrs);
  1406	
  1407		if (kbuf) {
  1408			const compat_ulong_t *k = kbuf;
  1409			while (count > 0 && !rc) {
  1410				rc = __poke_user_compat(target, pos, *k++);
  1411				count -= sizeof(*k);
  1412				pos += sizeof(*k);
  1413			}
  1414		} else {
  1415			const compat_ulong_t  __user *u = ubuf;
  1416			while (count > 0 && !rc) {
  1417				compat_ulong_t word;
  1418				rc = __get_user(word, u++);
  1419				if (rc)
  1420					break;
  1421				rc = __poke_user_compat(target, pos, word);
  1422				count -= sizeof(*u);
  1423				pos += sizeof(*u);
  1424			}
  1425		}
  1426	
  1427		if (rc == 0 && target == current)
  1428			restore_access_regs(target->thread.acrs);
  1429	
  1430		return rc;
  1431	}
  1432	
  1433	static int s390_compat_regs_high_get(struct task_struct *target,
  1434					     const struct user_regset *regset,
  1435					     struct membuf to)
  1436	{
  1437		compat_ulong_t *gprs_high;
  1438		int i;
  1439	
  1440		gprs_high = (compat_ulong_t *)task_pt_regs(target)->gprs;
> 1441		for (i = 0; n < NUM_GPRS; i++, gprs_high += 2)
  1442			membuf_store(&to, *gprs_high);
  1443		return 0;
  1444	}
  1445	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 28408 bytes --]

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

end of thread, other threads:[~2020-05-13  6:34 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-13  6:32 [vfs:work.regset 9/9] arch/s390/kernel/ptrace.c:1306:11: error: initialization of 'int (*)(struct task_struct *, const struct user_regset *, struct membuf)' from incompatible pointer type 'int (*)(struct task_struct *, const struct user_regset *, unsigned int, struct membuf)' kbuild test robot
2020-05-13  6:32 ` kbuild test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.