[android-goldfish:android-5.4 1/1] fs/incfs/data_mgmt.h:318:44: sparse: sparse: cast truncates bits from constant value (5346434e49 becomes 46434e49)
by kernel test robot
tree: https://android.googlesource.com/kernel/goldfish android-5.4
head: de63639926dcacc76a4030ad43592d80a8503ea9
commit: de63639926dcacc76a4030ad43592d80a8503ea9 [1/1] ANDROID: Incremental fs: Fix four error-path bugs
config: i386-randconfig-s002-20200612 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-13) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.1-250-g42323db3-dirty
git checkout de63639926dcacc76a4030ad43592d80a8503ea9
# save the attached .config to linux build tree
make W=1 C=1 ARCH=i386 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
>> fs/incfs/data_mgmt.h:318:44: sparse: sparse: cast truncates bits from constant value (5346434e49 becomes 46434e49)
fs/incfs/vfs.c:1257:48: sparse: sparse: non size-preserving integer to pointer cast
fs/incfs/vfs.c:2181:23: sparse: sparse: cast truncates bits from constant value (5346434e49 becomes 46434e49)
vim +318 fs/incfs/data_mgmt.h
295
296 /*
297 * Collects pending reads and saves them into the array (reads/reads_size).
298 * Only reads with serial_number > sn_lowerbound are reported.
299 * Returns how many reads were saved into the array.
300 */
301 int incfs_collect_pending_reads(struct mount_info *mi, int sn_lowerbound,
302 struct incfs_pending_read_info *reads,
303 int reads_size);
304
305 int incfs_collect_logged_reads(struct mount_info *mi,
306 struct read_log_state *start_state,
307 struct incfs_pending_read_info *reads,
308 int reads_size);
309 struct read_log_state incfs_get_log_state(struct mount_info *mi);
310 int incfs_get_uncollected_logs_count(struct mount_info *mi,
311 const struct read_log_state *state);
312
313 static inline struct inode_info *get_incfs_node(struct inode *inode)
314 {
315 if (!inode)
316 return NULL;
317
> 318 if (inode->i_sb->s_magic != (long) INCFS_MAGIC_NUMBER) {
319 /* This inode doesn't belong to us. */
320 pr_warn_once("incfs: %s on an alien inode.", __func__);
321 return NULL;
322 }
323
324 return container_of(inode, struct inode_info, n_vfs_inode);
325 }
326
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 3 months
Re: arch/powerpc/kexec/core.c:246:29: sparse: sparse: incorrect type in assignment (different base types)
by Xia, Hui
>-----Original Message-----
>From: Christophe Leroy <christophe.leroy(a)csgroup.eu>
>Sent: 2020年6月12日 13:15
>To: lkp <lkp(a)intel.com>; Christophe Leroy <christophe.leroy(a)c-s.fr>
>Cc: kbuild-all(a)lists.01.org; linux-kernel(a)vger.kernel.org; Michael Ellerman
><mpe(a)ellerman.id.au>
>Subject: Re: arch/powerpc/kexec/core.c:246:29: sparse: sparse: incorrect type in
>assignment (different base types)
>
>Le 11/06/2020 à 18:01, kernel test robot a écrit :
>> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
>> head: b29482fde649c72441d5478a4ea2c52c56d97a5e
>> commit: 793b08e2efff3ec020c5c5861d00ed394fcdd488 powerpc/kexec: Move
>kexec files into a dedicated subdir.
>> date: 7 months ago
>> config: powerpc-randconfig-s032-20200611 (attached as .config)
>> compiler: powerpc-linux-gcc (GCC) 9.3.0
>> reproduce:
>> # apt-get install sparse
>> # sparse version: v0.6.1-250-g42323db3-dirty
>> git checkout 793b08e2efff3ec020c5c5861d00ed394fcdd488
>> # save the attached .config to linux build tree
>> make W=1 C=1 ARCH=powerpc CF='-fdiagnostic-prefix -
>D__CHECK_ENDIAN__'
>>
>> If you fix the issue, kindly add following tag as appropriate
>> Reported-by: kernel test robot <lkp(a)intel.com>
>
>
>That's the second time the robot reports sparse errors on that commit, but the
>only thing I did is move code, that commit didn't add any code, so I don't know
>what I should do about it.
Hi Christophe,
Yes, these sparse warnings not introduced by this commit.
Please ignore them. Sorry for the noise.
These warnings were treated as new warning because the file name changed (arch/powerpc/kernel/machine_kexec.c --> arch/powerpc/kexec/core.c)
We will look for solution to resolve such kind of false positive. Thanks.
>
>Christophe
>
>
>>
>>
>> sparse warnings: (new ones prefixed by >>)
>>
>>>> arch/powerpc/kexec/core.c:246:29: sparse: sparse: incorrect type in
>assignment (different base types) @@ expected unsigned long long static
>[addressable] [toplevel] [usertype] crashk_base @@ got restricted __be32
>[usertype] @@
>> arch/powerpc/kexec/core.c:246:29: sparse: expected unsigned long long
>static [addressable] [toplevel] [usertype] crashk_base
>> arch/powerpc/kexec/core.c:246:29: sparse: got restricted __be32
>[usertype]
>>>> arch/powerpc/kexec/core.c:248:29: sparse: sparse: incorrect type in
>assignment (different base types) @@ expected unsigned long long static
>[addressable] [toplevel] [usertype] crashk_size @@ got restricted __be32
>[usertype] @@
>> arch/powerpc/kexec/core.c:248:29: sparse: expected unsigned long long
>static [addressable] [toplevel] [usertype] crashk_size
>> arch/powerpc/kexec/core.c:248:29: sparse: got restricted __be32
>[usertype]
>> arch/powerpc/kexec/core.c:256:19: sparse: sparse: incorrect type in
>assignment (different base types) @@ expected unsigned long long static
>[addressable] [toplevel] mem_limit @@ got restricted __be32 [usertype] @@
>> arch/powerpc/kexec/core.c:256:19: sparse: expected unsigned long long
>static [addressable] [toplevel] mem_limit
>> arch/powerpc/kexec/core.c:256:19: sparse: got restricted __be32
>[usertype]
>>>> arch/powerpc/kexec/core.c:272:20: sparse: sparse: incorrect type in
>assignment (different base types) @@ expected unsigned long long static
>[addressable] [toplevel] [usertype] kernel_end @@ got restricted __be32
>[usertype] @@
>> arch/powerpc/kexec/core.c:272:20: sparse: expected unsigned long long
>static [addressable] [toplevel] [usertype] kernel_end
>> arch/powerpc/kexec/core.c:272:20: sparse: got restricted __be32
>[usertype]
>>
>> vim +246 arch/powerpc/kexec/core.c
>>
>> ea961a828fe725 arch/powerpc/kernel/machine_kexec.c Anton Blanchard
>2014-01-22 235
>> 6f29c3298b1821 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth
>2008-12-17 236 static void __init export_crashk_values(struct device_node
>*node)
>> 6f29c3298b1821 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth
>2008-12-17 237 {
>> 6f29c3298b1821 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth
>2008-12-17 238 /* There might be existing crash kernel properties, but
>we can't
>> 6f29c3298b1821 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth
>2008-12-17 239 * be sure what's in them, so remove them. */
>> 925e2d1ded80fc arch/powerpc/kernel/machine_kexec.c Suraj Jitindar Singh
>2016-04-28 240 of_remove_property(node, of_find_property(node,
>> 925e2d1ded80fc arch/powerpc/kernel/machine_kexec.c Suraj Jitindar Singh
>2016-04-28 241 "linux,crashkernel-base", NULL));
>> 925e2d1ded80fc arch/powerpc/kernel/machine_kexec.c Suraj Jitindar Singh
>2016-04-28 242 of_remove_property(node, of_find_property(node,
>> 925e2d1ded80fc arch/powerpc/kernel/machine_kexec.c Suraj Jitindar Singh
>2016-04-28 243 "linux,crashkernel-size", NULL));
>> 6f29c3298b1821 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth
>2008-12-17 244
>> 6f29c3298b1821 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth
>2008-12-17 245 if (crashk_res.start != 0) {
>> ea961a828fe725 arch/powerpc/kernel/machine_kexec.c Anton Blanchard
>2014-01-22 @246 crashk_base =
>cpu_to_be_ulong(crashk_res.start),
>> 79d1c712958f94 arch/powerpc/kernel/machine_kexec.c Nathan Fontenot
>2012-10-02 247 of_add_property(node, &crashk_base_prop);
>> ea961a828fe725 arch/powerpc/kernel/machine_kexec.c Anton Blanchard
>2014-01-22 @248 crashk_size =
>cpu_to_be_ulong(resource_size(&crashk_res));
>> 79d1c712958f94 arch/powerpc/kernel/machine_kexec.c Nathan Fontenot
>2012-10-02 249 of_add_property(node, &crashk_size_prop);
>> 6f29c3298b1821 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth
>2008-12-17 250 }
>> 4bc77a5ed215b4 arch/powerpc/kernel/machine_kexec.c Suzuki Poulose
>2012-08-21 251
>> 4bc77a5ed215b4 arch/powerpc/kernel/machine_kexec.c Suzuki Poulose
>2012-08-21 252 /*
>> 4bc77a5ed215b4 arch/powerpc/kernel/machine_kexec.c Suzuki Poulose
>2012-08-21 253 * memory_limit is required by the kexec-tools to limit
>the
>> 4bc77a5ed215b4 arch/powerpc/kernel/machine_kexec.c Suzuki Poulose
>2012-08-21 254 * crash regions to the actual memory used.
>> 4bc77a5ed215b4 arch/powerpc/kernel/machine_kexec.c Suzuki Poulose
>2012-08-21 255 */
>> ea961a828fe725 arch/powerpc/kernel/machine_kexec.c Anton Blanchard
>2014-01-22 256 mem_limit = cpu_to_be_ulong(memory_limit);
>> 79d1c712958f94 arch/powerpc/kernel/machine_kexec.c Nathan Fontenot
>2012-10-02 257 of_update_property(node, &memory_limit_prop);
>> 6f29c3298b1821 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth
>2008-12-17 258 }
>> 6f29c3298b1821 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth
>2008-12-17 259
>> 2e8e4f5b80e101 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth
>2008-12-16 260 static int __init kexec_setup(void)
>> 2e8e4f5b80e101 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth
>2008-12-16 261 {
>> 2e8e4f5b80e101 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth
>2008-12-16 262 struct device_node *node;
>> 2e8e4f5b80e101 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth
>2008-12-16 263
>> 2e8e4f5b80e101 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth
>2008-12-16 264 node = of_find_node_by_path("/chosen");
>> 2e8e4f5b80e101 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth
>2008-12-16 265 if (!node)
>> 2e8e4f5b80e101 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth
>2008-12-16 266 return -ENOENT;
>> 2e8e4f5b80e101 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth
>2008-12-16 267
>> 2e8e4f5b80e101 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth
>2008-12-16 268 /* remove any stale properties so ours can be found */
>> 925e2d1ded80fc arch/powerpc/kernel/machine_kexec.c Suraj Jitindar Singh
>2016-04-28 269 of_remove_property(node, of_find_property(node,
>kernel_end_prop.name, NULL));
>> 2e8e4f5b80e101 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth
>2008-12-16 270
>> 2e8e4f5b80e101 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth
>2008-12-16 271 /* information needed by userspace when using
>default_machine_kexec */
>> ea961a828fe725 arch/powerpc/kernel/machine_kexec.c Anton Blanchard
>2014-01-22 @272 kernel_end = cpu_to_be_ulong(__pa(_end));
>>
>> :::::: The code at line 246 was first introduced by commit
>> :::::: ea961a828fe7250e954f086d74d9323c3d44c3e4 powerpc: Fix endian
>> issues in kexec and crash dump code
>>
>> :::::: TO: Anton Blanchard <anton(a)samba.org>
>> :::::: CC: Benjamin Herrenschmidt <benh(a)kernel.crashing.org>
>>
>> ---
>> 0-DAY CI Kernel Test Service, Intel Corporation
>> https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
>>
2 years, 3 months
[android-common:android-4.19 10/14] io-pgtable.c:undefined reference to `iommu_debugfs_top'
by kernel test robot
tree: https://android.googlesource.com/kernel/common android-4.19
head: a2038b4794fe99dd786877b89c98b84d78650f69
commit: e24979f0e7bff01a70f00a01fccc5d62f6f980aa [10/14] ANDROID: GKI: iommu: Snapshot of vendor changes
config: i386-randconfig-a015-20200612 (attached as .config)
compiler: gcc-6 (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
reproduce (this is a W=1 build):
git checkout e24979f0e7bff01a70f00a01fccc5d62f6f980aa
# save the attached .config to linux build tree
make W=1 ARCH=i386
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>, old ones prefixed by <<):
ld: drivers/iommu/io-pgtable.o: in function `io_pgtable_init':
>> io-pgtable.c:(.init.text+0x7): undefined reference to `iommu_debugfs_top'
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 3 months
[RFC PATCH] hugetlb: hugetlbfs_file_operations can be static
by kernel test robot
Signed-off-by: kernel test robot <lkp(a)intel.com>
---
inode.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
index 5c0c50a88c84b..98d044be8a5cf 100644
--- a/fs/hugetlbfs/inode.c
+++ b/fs/hugetlbfs/inode.c
@@ -41,7 +41,7 @@
static const struct super_operations hugetlbfs_ops;
static const struct address_space_operations hugetlbfs_aops;
-const struct file_operations hugetlbfs_file_operations;
+static const struct file_operations hugetlbfs_file_operations;
static const struct inode_operations hugetlbfs_dir_inode_operations;
static const struct inode_operations hugetlbfs_inode_operations;
2 years, 3 months
drivers/firmware/broadcom/bcm47xx_sprom.c:563:6: warning: no previous prototype for 'bcm47xx_fill_sprom'
by kernel test robot
Hi Florian,
First bad commit (maybe != root cause):
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: b791d1bdf9212d944d749a5c7ff6febdba241771
commit: 5699ad0aaf1091824f22492a708478912c38c7d2 firmware: bcm47xx_nvram: Allow COMPILE_TEST
date: 10 months ago
config: i386-randconfig-r011-20200612 (attached as .config)
compiler: gcc-4.9 (Ubuntu 4.9.3-13ubuntu2) 4.9.3
reproduce (this is a W=1 build):
git checkout 5699ad0aaf1091824f22492a708478912c38c7d2
# save the attached .config to linux build tree
make W=1 ARCH=i386
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
>> drivers/firmware/broadcom/bcm47xx_sprom.c:563:6: warning: no previous prototype for 'bcm47xx_fill_sprom' [-Wmissing-prototypes]
void bcm47xx_fill_sprom(struct ssb_sprom *sprom, const char *prefix,
^
>> drivers/firmware/broadcom/bcm47xx_sprom.c:705:5: warning: no previous prototype for 'bcm47xx_sprom_register_fallbacks' [-Wmissing-prototypes]
int bcm47xx_sprom_register_fallbacks(void)
^
vim +/bcm47xx_fill_sprom +563 drivers/firmware/broadcom/bcm47xx_sprom.c
5d24ceab4eaf0d arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-10-03 562
b8ebbaff037981 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-10-03 @563 void bcm47xx_fill_sprom(struct ssb_sprom *sprom, const char *prefix,
b8ebbaff037981 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-10-03 564 bool fallback)
019eee2e34e2d1 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-02-28 565 {
b8ebbaff037981 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-10-03 566 bcm47xx_fill_sprom_ethernet(sprom, prefix, fallback);
b8ebbaff037981 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-10-03 567 bcm47xx_fill_board_data(sprom, prefix, fallback);
019eee2e34e2d1 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-02-28 568
b8ebbaff037981 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-10-03 569 nvram_read_u8(prefix, NULL, "sromrev", &sprom->revision, 0, fallback);
019eee2e34e2d1 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-02-28 570
590605c6bc31d5 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-06-21 571 /* Entries requiring custom functions */
590605c6bc31d5 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-06-21 572 nvram_read_alpha2(prefix, "ccode", sprom->alpha2, fallback);
590605c6bc31d5 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-06-21 573 if (sprom->revision >= 3)
590605c6bc31d5 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-06-21 574 nvram_read_leddc(prefix, "leddc", &sprom->leddc_on_time,
590605c6bc31d5 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-06-21 575 &sprom->leddc_off_time, fallback);
590605c6bc31d5 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-06-21 576
019eee2e34e2d1 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-02-28 577 switch (sprom->revision) {
019eee2e34e2d1 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-02-28 578 case 4:
019eee2e34e2d1 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-02-28 579 case 5:
b8ebbaff037981 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-10-03 580 bcm47xx_fill_sprom_path_r4589(sprom, prefix, fallback);
b8ebbaff037981 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-10-03 581 bcm47xx_fill_sprom_path_r45(sprom, prefix, fallback);
019eee2e34e2d1 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-02-28 582 break;
019eee2e34e2d1 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-02-28 583 case 8:
019eee2e34e2d1 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-02-28 584 case 9:
b8ebbaff037981 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-10-03 585 bcm47xx_fill_sprom_path_r4589(sprom, prefix, fallback);
019eee2e34e2d1 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-02-28 586 break;
019eee2e34e2d1 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-02-28 587 }
d55a52ccf8f80c arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-04-02 588
d55a52ccf8f80c arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-04-02 589 bcm47xx_sprom_fill_auto(sprom, prefix, fallback);
019eee2e34e2d1 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-02-28 590 }
a9bba182a1f3f3 arch/mips/bcm47xx/sprom.c Hauke Mehrtens 2012-04-29 591
2ab71a02c56f82 drivers/firmware/broadcom/bcm47xx_sprom.c Rafał Miłecki 2016-01-25 592 #if IS_BUILTIN(CONFIG_SSB) && IS_ENABLED(CONFIG_SSB_SPROM)
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 593 static int bcm47xx_get_sprom_ssb(struct ssb_bus *bus, struct ssb_sprom *out)
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 594 {
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 595 char prefix[10];
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 596
daa7ce02513d21 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-10-25 597 switch (bus->bustype) {
daa7ce02513d21 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-10-25 598 case SSB_BUSTYPE_SSB:
daa7ce02513d21 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-10-25 599 bcm47xx_fill_sprom(out, NULL, false);
daa7ce02513d21 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-10-25 600 return 0;
daa7ce02513d21 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-10-25 601 case SSB_BUSTYPE_PCI:
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 602 memset(out, 0, sizeof(struct ssb_sprom));
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 603 snprintf(prefix, sizeof(prefix), "pci/%u/%u/",
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 604 bus->host_pci->bus->number + 1,
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 605 PCI_SLOT(bus->host_pci->devfn));
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 606 bcm47xx_fill_sprom(out, prefix, false);
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 607 return 0;
daa7ce02513d21 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-10-25 608 default:
d548ca6b0784a9 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-12-10 609 pr_warn("Unable to fill SPROM for given bustype.\n");
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 610 return -EINVAL;
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 611 }
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 612 }
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 613 #endif
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 614
2ab71a02c56f82 drivers/firmware/broadcom/bcm47xx_sprom.c Rafał Miłecki 2016-01-25 615 #if IS_BUILTIN(CONFIG_BCMA)
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 616 /*
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 617 * Having many NVRAM entries for PCI devices led to repeating prefixes like
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 618 * pci/1/1/ all the time and wasting flash space. So at some point Broadcom
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 619 * decided to introduce prefixes like 0: 1: 2: etc.
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 620 * If we find e.g. devpath0=pci/2/1 or devpath0=pci/2/1/ we should use 0:
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 621 * instead of pci/2/1/.
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 622 */
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 623 static void bcm47xx_sprom_apply_prefix_alias(char *prefix, size_t prefix_size)
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 624 {
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 625 size_t prefix_len = strlen(prefix);
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 626 size_t short_len = prefix_len - 1;
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 627 char nvram_var[10];
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 628 char buf[20];
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 629 int i;
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 630
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 631 /* Passed prefix has to end with a slash */
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 632 if (prefix_len <= 0 || prefix[prefix_len - 1] != '/')
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 633 return;
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 634
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 635 for (i = 0; i < 3; i++) {
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 636 if (snprintf(nvram_var, sizeof(nvram_var), "devpath%d", i) <= 0)
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 637 continue;
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 638 if (bcm47xx_nvram_getenv(nvram_var, buf, sizeof(buf)) < 0)
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 639 continue;
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 640 if (!strcmp(buf, prefix) ||
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 641 (short_len && strlen(buf) == short_len && !strncmp(buf, prefix, short_len))) {
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 642 snprintf(prefix, prefix_size, "%d:", i);
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 643 return;
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 644 }
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 645 }
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 646 }
9a6a2b96dfd8b0 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-03-14 647
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 648 static int bcm47xx_get_sprom_bcma(struct bcma_bus *bus, struct ssb_sprom *out)
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 649 {
2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 650 struct bcma_boardinfo *binfo = &bus->boardinfo;
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 651 struct bcma_device *core;
2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 652 char buf[10];
2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 653 char *prefix;
2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 654 bool fallback = false;
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 655
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 656 switch (bus->hosttype) {
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 657 case BCMA_HOSTTYPE_PCI:
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 658 memset(out, 0, sizeof(struct ssb_sprom));
3d1f664ab94038 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2016-01-01 659 /* On BCM47XX all PCI buses share the same domain */
97f2645f358b41 drivers/firmware/broadcom/bcm47xx_sprom.c Masahiro Yamada 2016-08-03 660 if (IS_ENABLED(CONFIG_BCM47XX))
2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 661 snprintf(buf, sizeof(buf), "pci/%u/%u/",
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 662 bus->host_pci->bus->number + 1,
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 663 PCI_SLOT(bus->host_pci->devfn));
3d1f664ab94038 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2016-01-01 664 else
3d1f664ab94038 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2016-01-01 665 snprintf(buf, sizeof(buf), "pci/%u/%u/",
3d1f664ab94038 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2016-01-01 666 pci_domain_nr(bus->host_pci->bus) + 1,
3d1f664ab94038 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2016-01-01 667 bus->host_pci->bus->number);
2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 668 bcm47xx_sprom_apply_prefix_alias(buf, sizeof(buf));
2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 669 prefix = buf;
2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 670 break;
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 671 case BCMA_HOSTTYPE_SOC:
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 672 memset(out, 0, sizeof(struct ssb_sprom));
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 673 core = bcma_find_core(bus, BCMA_CORE_80211);
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 674 if (core) {
2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 675 snprintf(buf, sizeof(buf), "sb/%u/",
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 676 core->core_index);
2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 677 prefix = buf;
2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 678 fallback = true;
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 679 } else {
2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 680 prefix = NULL;
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 681 }
2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 682 break;
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 683 default:
d548ca6b0784a9 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-12-10 684 pr_warn("Unable to fill SPROM for given bustype.\n");
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 685 return -EINVAL;
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 686 }
2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 687
2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 688 nvram_read_u16(prefix, NULL, "boardvendor", &binfo->vendor, 0, true);
2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 689 if (!binfo->vendor)
2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 690 binfo->vendor = SSB_BOARDVENDOR_BCM;
2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 691 nvram_read_u16(prefix, NULL, "boardtype", &binfo->type, 0, true);
2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 692
2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 693 bcm47xx_fill_sprom(out, prefix, fallback);
2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 694
2623899459da55 arch/mips/bcm47xx/sprom.c Rafał Miłecki 2015-05-12 695 return 0;
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 696 }
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 697 #endif
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 698
2ab71a02c56f82 drivers/firmware/broadcom/bcm47xx_sprom.c Rafał Miłecki 2016-01-25 699 static unsigned int bcm47xx_sprom_registered;
2ab71a02c56f82 drivers/firmware/broadcom/bcm47xx_sprom.c Rafał Miłecki 2016-01-25 700
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 701 /*
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 702 * On bcm47xx we need to register SPROM fallback handler very early, so we can't
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 703 * use anything like platform device / driver for this.
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 704 */
2ab71a02c56f82 drivers/firmware/broadcom/bcm47xx_sprom.c Rafał Miłecki 2016-01-25 @705 int bcm47xx_sprom_register_fallbacks(void)
a59da8fb3b2a1f arch/mips/bcm47xx/sprom.c Rafał Miłecki 2014-10-28 706 {
2ab71a02c56f82 drivers/firmware/broadcom/bcm47xx_sprom.c Rafał Miłecki 2016-01-25 707 if (bcm47xx_sprom_registered)
2ab71a02c56f82 drivers/firmware/broadcom/bcm47xx_sprom.c Rafał Miłecki 2016-01-25 708 return 0;
2ab71a02c56f82 drivers/firmware/broadcom/bcm47xx_sprom.c Rafał Miłecki 2016-01-25 709
:::::: The code at line 563 was first introduced by commit
:::::: b8ebbaff03798180c4d9661105670e03276afe83 MIPS: BCM47xx: sprom: read values without prefix as fallback
:::::: TO: Hauke Mehrtens <hauke(a)hauke-m.de>
:::::: CC: John Crispin <blogic(a)openwrt.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 3 months
[android-common:android-5.4 6/6] fs/incfs/vfs.c:1307:37: sparse: sparse: non size-preserving integer to pointer cast
by kernel test robot
tree: https://android.googlesource.com/kernel/common android-5.4
head: 383f53ee186a22c3d04cc6809e3b5e13bc2b571d
commit: 383f53ee186a22c3d04cc6809e3b5e13bc2b571d [6/6] ANDROID: Incremental fs: Remove unneeded compatibility typedef
config: i386-randconfig-s002-20200612 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-13) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.1-250-g42323db3-dirty
git checkout 383f53ee186a22c3d04cc6809e3b5e13bc2b571d
# save the attached .config to linux build tree
make W=1 C=1 ARCH=i386 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
>> fs/incfs/vfs.c:1307:37: sparse: sparse: non size-preserving integer to pointer cast
>> fs/incfs/vfs.c:2054:23: sparse: sparse: cast truncates bits from constant value (5346434e49 becomes 46434e49)
vim +1307 fs/incfs/vfs.c
1be052b20ba04b Eugene Zemtsov 2019-11-18 1138
1be052b20ba04b Eugene Zemtsov 2019-11-18 1139 static long ioctl_create_file(struct mount_info *mi,
1be052b20ba04b Eugene Zemtsov 2019-11-18 1140 struct incfs_new_file_args __user *usr_args)
1be052b20ba04b Eugene Zemtsov 2019-11-18 1141 {
1be052b20ba04b Eugene Zemtsov 2019-11-18 1142 struct incfs_new_file_args args;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1143 char *file_id_str = NULL;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1144 struct dentry *index_file_dentry = NULL;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1145 struct dentry *named_file_dentry = NULL;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1146 struct path parent_dir_path = {};
1be052b20ba04b Eugene Zemtsov 2019-11-18 1147 struct inode *index_dir_inode = NULL;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1148 __le64 size_attr_value = 0;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1149 char *file_name = NULL;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1150 char *attr_value = NULL;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1151 int error = 0;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1152 bool locked = false;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1153
1be052b20ba04b Eugene Zemtsov 2019-11-18 1154 if (!mi || !mi->mi_index_dir) {
1be052b20ba04b Eugene Zemtsov 2019-11-18 1155 error = -EFAULT;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1156 goto out;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1157 }
1be052b20ba04b Eugene Zemtsov 2019-11-18 1158 if (!access_ok(usr_args, sizeof(args))) {
1be052b20ba04b Eugene Zemtsov 2019-11-18 1159 error = -EFAULT;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1160 goto out;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1161 }
1be052b20ba04b Eugene Zemtsov 2019-11-18 1162 if (copy_from_user(&args, usr_args, sizeof(args)) > 0) {
1be052b20ba04b Eugene Zemtsov 2019-11-18 1163 error = -EFAULT;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1164 goto out;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1165 }
1be052b20ba04b Eugene Zemtsov 2019-11-18 1166
1be052b20ba04b Eugene Zemtsov 2019-11-18 1167 file_name = strndup_user(u64_to_user_ptr(args.file_name), PATH_MAX);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1168 if (IS_ERR(file_name)) {
1be052b20ba04b Eugene Zemtsov 2019-11-18 1169 error = PTR_ERR(file_name);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1170 file_name = NULL;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1171 goto out;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1172 }
1be052b20ba04b Eugene Zemtsov 2019-11-18 1173
1be052b20ba04b Eugene Zemtsov 2019-11-18 1174 error = validate_name(file_name);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1175 if (error)
1be052b20ba04b Eugene Zemtsov 2019-11-18 1176 goto out;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1177
1be052b20ba04b Eugene Zemtsov 2019-11-18 1178 file_id_str = file_id_to_str(args.file_id);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1179 if (!file_id_str) {
1be052b20ba04b Eugene Zemtsov 2019-11-18 1180 error = -ENOMEM;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1181 goto out;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1182 }
1be052b20ba04b Eugene Zemtsov 2019-11-18 1183
1be052b20ba04b Eugene Zemtsov 2019-11-18 1184 error = mutex_lock_interruptible(&mi->mi_dir_struct_mutex);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1185 if (error)
1be052b20ba04b Eugene Zemtsov 2019-11-18 1186 goto out;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1187 locked = true;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1188
1be052b20ba04b Eugene Zemtsov 2019-11-18 1189 /* Find a directory to put the file into. */
1be052b20ba04b Eugene Zemtsov 2019-11-18 1190 error = dir_relative_path_resolve(mi,
1be052b20ba04b Eugene Zemtsov 2019-11-18 1191 u64_to_user_ptr(args.directory_path),
1be052b20ba04b Eugene Zemtsov 2019-11-18 1192 &parent_dir_path);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1193 if (error)
1be052b20ba04b Eugene Zemtsov 2019-11-18 1194 goto out;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1195
1be052b20ba04b Eugene Zemtsov 2019-11-18 1196 if (parent_dir_path.dentry == mi->mi_index_dir) {
1be052b20ba04b Eugene Zemtsov 2019-11-18 1197 /* Can't create a file directly inside .index */
1be052b20ba04b Eugene Zemtsov 2019-11-18 1198 error = -EBUSY;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1199 goto out;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1200 }
1be052b20ba04b Eugene Zemtsov 2019-11-18 1201
1be052b20ba04b Eugene Zemtsov 2019-11-18 1202 /* Look up a dentry in the parent dir. It should be negative. */
1be052b20ba04b Eugene Zemtsov 2019-11-18 1203 named_file_dentry = incfs_lookup_dentry(parent_dir_path.dentry,
1be052b20ba04b Eugene Zemtsov 2019-11-18 1204 file_name);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1205 if (!named_file_dentry) {
1be052b20ba04b Eugene Zemtsov 2019-11-18 1206 error = -EFAULT;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1207 goto out;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1208 }
1be052b20ba04b Eugene Zemtsov 2019-11-18 1209 if (IS_ERR(named_file_dentry)) {
1be052b20ba04b Eugene Zemtsov 2019-11-18 1210 error = PTR_ERR(named_file_dentry);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1211 named_file_dentry = NULL;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1212 goto out;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1213 }
1be052b20ba04b Eugene Zemtsov 2019-11-18 1214 if (d_really_is_positive(named_file_dentry)) {
1be052b20ba04b Eugene Zemtsov 2019-11-18 1215 /* File with this path already exists. */
1be052b20ba04b Eugene Zemtsov 2019-11-18 1216 error = -EEXIST;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1217 goto out;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1218 }
1be052b20ba04b Eugene Zemtsov 2019-11-18 1219 /* Look up a dentry in the .index dir. It should be negative. */
1be052b20ba04b Eugene Zemtsov 2019-11-18 1220 index_file_dentry = incfs_lookup_dentry(mi->mi_index_dir, file_id_str);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1221 if (!index_file_dentry) {
1be052b20ba04b Eugene Zemtsov 2019-11-18 1222 error = -EFAULT;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1223 goto out;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1224 }
1be052b20ba04b Eugene Zemtsov 2019-11-18 1225 if (IS_ERR(index_file_dentry)) {
1be052b20ba04b Eugene Zemtsov 2019-11-18 1226 error = PTR_ERR(index_file_dentry);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1227 index_file_dentry = NULL;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1228 goto out;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1229 }
1be052b20ba04b Eugene Zemtsov 2019-11-18 1230 if (d_really_is_positive(index_file_dentry)) {
1be052b20ba04b Eugene Zemtsov 2019-11-18 1231 /* File with this ID already exists in index. */
1be052b20ba04b Eugene Zemtsov 2019-11-18 1232 error = -EEXIST;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1233 goto out;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1234 }
1be052b20ba04b Eugene Zemtsov 2019-11-18 1235
1be052b20ba04b Eugene Zemtsov 2019-11-18 1236 /* Creating a file in the .index dir. */
1be052b20ba04b Eugene Zemtsov 2019-11-18 1237 index_dir_inode = d_inode(mi->mi_index_dir);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1238 inode_lock_nested(index_dir_inode, I_MUTEX_PARENT);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1239 error = vfs_create(index_dir_inode, index_file_dentry,
1be052b20ba04b Eugene Zemtsov 2019-11-18 1240 args.mode, true);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1241 inode_unlock(index_dir_inode);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1242
1be052b20ba04b Eugene Zemtsov 2019-11-18 1243 if (error)
1be052b20ba04b Eugene Zemtsov 2019-11-18 1244 goto out;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1245 if (!d_really_is_positive(index_file_dentry)) {
1be052b20ba04b Eugene Zemtsov 2019-11-18 1246 error = -EINVAL;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1247 goto out;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1248 }
1be052b20ba04b Eugene Zemtsov 2019-11-18 1249
1be052b20ba04b Eugene Zemtsov 2019-11-18 1250 /* Save the file's ID as an xattr for easy fetching in future. */
1be052b20ba04b Eugene Zemtsov 2019-11-18 1251 error = vfs_setxattr(index_file_dentry, INCFS_XATTR_ID_NAME,
1be052b20ba04b Eugene Zemtsov 2019-11-18 1252 file_id_str, strlen(file_id_str), XATTR_CREATE);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1253 if (error) {
1be052b20ba04b Eugene Zemtsov 2019-11-18 1254 pr_debug("incfs: vfs_setxattr err:%d\n", error);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1255 goto delete_index_file;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1256 }
1be052b20ba04b Eugene Zemtsov 2019-11-18 1257
1be052b20ba04b Eugene Zemtsov 2019-11-18 1258 /* Save the file's size as an xattr for easy fetching in future. */
1be052b20ba04b Eugene Zemtsov 2019-11-18 1259 size_attr_value = cpu_to_le64(args.size);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1260 error = vfs_setxattr(index_file_dentry, INCFS_XATTR_SIZE_NAME,
1be052b20ba04b Eugene Zemtsov 2019-11-18 1261 (char *)&size_attr_value, sizeof(size_attr_value),
1be052b20ba04b Eugene Zemtsov 2019-11-18 1262 XATTR_CREATE);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1263 if (error) {
1be052b20ba04b Eugene Zemtsov 2019-11-18 1264 pr_debug("incfs: vfs_setxattr err:%d\n", error);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1265 goto delete_index_file;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1266 }
1be052b20ba04b Eugene Zemtsov 2019-11-18 1267
1be052b20ba04b Eugene Zemtsov 2019-11-18 1268 /* Save the file's attrubute as an xattr */
1be052b20ba04b Eugene Zemtsov 2019-11-18 1269 if (args.file_attr_len && args.file_attr) {
1be052b20ba04b Eugene Zemtsov 2019-11-18 1270 if (args.file_attr_len > INCFS_MAX_FILE_ATTR_SIZE) {
1be052b20ba04b Eugene Zemtsov 2019-11-18 1271 error = -E2BIG;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1272 goto delete_index_file;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1273 }
1be052b20ba04b Eugene Zemtsov 2019-11-18 1274
1be052b20ba04b Eugene Zemtsov 2019-11-18 1275 attr_value = kmalloc(args.file_attr_len, GFP_NOFS);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1276 if (!attr_value) {
1be052b20ba04b Eugene Zemtsov 2019-11-18 1277 error = -ENOMEM;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1278 goto delete_index_file;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1279 }
1be052b20ba04b Eugene Zemtsov 2019-11-18 1280
1be052b20ba04b Eugene Zemtsov 2019-11-18 1281 if (!access_ok(u64_to_user_ptr(args.file_attr),
1be052b20ba04b Eugene Zemtsov 2019-11-18 1282 args.file_attr_len)) {
1be052b20ba04b Eugene Zemtsov 2019-11-18 1283 error = -EFAULT;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1284 goto delete_index_file;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1285 }
1be052b20ba04b Eugene Zemtsov 2019-11-18 1286
1be052b20ba04b Eugene Zemtsov 2019-11-18 1287 if (copy_from_user(attr_value,
1be052b20ba04b Eugene Zemtsov 2019-11-18 1288 u64_to_user_ptr(args.file_attr),
1be052b20ba04b Eugene Zemtsov 2019-11-18 1289 args.file_attr_len) > 0) {
1be052b20ba04b Eugene Zemtsov 2019-11-18 1290 error = -EFAULT;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1291 goto delete_index_file;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1292 }
1be052b20ba04b Eugene Zemtsov 2019-11-18 1293
1be052b20ba04b Eugene Zemtsov 2019-11-18 1294 error = vfs_setxattr(index_file_dentry,
1be052b20ba04b Eugene Zemtsov 2019-11-18 1295 INCFS_XATTR_METADATA_NAME,
1be052b20ba04b Eugene Zemtsov 2019-11-18 1296 attr_value, args.file_attr_len,
1be052b20ba04b Eugene Zemtsov 2019-11-18 1297 XATTR_CREATE);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1298
1be052b20ba04b Eugene Zemtsov 2019-11-18 1299 if (error)
1be052b20ba04b Eugene Zemtsov 2019-11-18 1300 goto delete_index_file;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1301 }
1be052b20ba04b Eugene Zemtsov 2019-11-18 1302
1be052b20ba04b Eugene Zemtsov 2019-11-18 1303 /* Initializing a newly created file. */
1be052b20ba04b Eugene Zemtsov 2019-11-18 1304 error = init_new_file(mi, index_file_dentry, &args.file_id, args.size,
1be052b20ba04b Eugene Zemtsov 2019-11-18 1305 range(attr_value, args.file_attr_len),
1be052b20ba04b Eugene Zemtsov 2019-11-18 1306 (struct incfs_file_signature_info __user *)
1be052b20ba04b Eugene Zemtsov 2019-11-18 @1307 args.signature_info);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1308 if (error)
1be052b20ba04b Eugene Zemtsov 2019-11-18 1309 goto delete_index_file;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1310
1be052b20ba04b Eugene Zemtsov 2019-11-18 1311 /* Linking a file with it's real name from the requested dir. */
1be052b20ba04b Eugene Zemtsov 2019-11-18 1312 error = incfs_link(index_file_dentry, named_file_dentry);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1313
1be052b20ba04b Eugene Zemtsov 2019-11-18 1314 if (!error)
1be052b20ba04b Eugene Zemtsov 2019-11-18 1315 goto out;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1316
1be052b20ba04b Eugene Zemtsov 2019-11-18 1317 delete_index_file:
1be052b20ba04b Eugene Zemtsov 2019-11-18 1318 incfs_unlink(index_file_dentry);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1319
1be052b20ba04b Eugene Zemtsov 2019-11-18 1320 out:
1be052b20ba04b Eugene Zemtsov 2019-11-18 1321 if (error)
1be052b20ba04b Eugene Zemtsov 2019-11-18 1322 pr_debug("incfs: %s err:%d\n", __func__, error);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1323
1be052b20ba04b Eugene Zemtsov 2019-11-18 1324 kfree(file_id_str);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1325 kfree(file_name);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1326 kfree(attr_value);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1327 dput(named_file_dentry);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1328 dput(index_file_dentry);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1329 path_put(&parent_dir_path);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1330 if (locked)
1be052b20ba04b Eugene Zemtsov 2019-11-18 1331 mutex_unlock(&mi->mi_dir_struct_mutex);
1be052b20ba04b Eugene Zemtsov 2019-11-18 1332 return error;
1be052b20ba04b Eugene Zemtsov 2019-11-18 1333 }
1be052b20ba04b Eugene Zemtsov 2019-11-18 1334
:::::: The code at line 1307 was first introduced by commit
:::::: 1be052b20ba04b635cf87bcff80de5314697953e ANDROID: Initial commit of Incremental FS
:::::: TO: Eugene Zemtsov <ezemtsov(a)google.com>
:::::: CC: Paul Lawrence <paullawrence(a)google.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 3 months
[android-common:android-3.18 95/206] kernel/trace/blktrace.c:536:18: sparse: sparse: incorrect type in initializer (different address spaces)
by kernel test robot
tree: https://android.googlesource.com/kernel/common android-3.18
head: e1ada1f8a51f0236f1fe313d134ed401a7bc80f9
commit: acdf2e7c8becbd8453a28b3c9daaf152b6dbe33e [95/206] blktrace: Protect q->blk_trace with RCU
config: i386-randconfig-s002-20200612 (attached as .config)
compiler: gcc-5 (Ubuntu 5.5.0-12ubuntu1) 5.5.0 20171010
reproduce:
# apt-get install sparse
# sparse version: v0.6.1-250-g42323db3-dirty
git checkout acdf2e7c8becbd8453a28b3c9daaf152b6dbe33e
# save the attached .config to linux build tree
make W=1 C=1 ARCH=i386 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
kernel/trace/blktrace.c:315:12: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct blk_trace *bt @@ got struct blk_trace [noderef] <asn:4> *[assigned] __ret @@
kernel/trace/blktrace.c:315:12: sparse: expected struct blk_trace *bt
kernel/trace/blktrace.c:315:12: sparse: got struct blk_trace [noderef] <asn:4> *[assigned] __ret
>> kernel/trace/blktrace.c:536:18: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct blk_trace [noderef] <asn:4> *__ret @@ got struct blk_trace *[assigned] bt @@
>> kernel/trace/blktrace.c:536:18: sparse: expected struct blk_trace [noderef] <asn:4> *__ret
kernel/trace/blktrace.c:536:18: sparse: got struct blk_trace *[assigned] bt
>> kernel/trace/blktrace.c:536:16: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct blk_trace *old_bt @@ got struct blk_trace [noderef] <asn:4> *[assigned] __ret @@
>> kernel/trace/blktrace.c:536:16: sparse: expected struct blk_trace *old_bt
kernel/trace/blktrace.c:536:16: sparse: got struct blk_trace [noderef] <asn:4> *[assigned] __ret
>> kernel/trace/blktrace.c:538:24: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct blk_trace [noderef] <asn:4> *__ret @@ got struct blk_trace *old_bt @@
kernel/trace/blktrace.c:538:24: sparse: expected struct blk_trace [noderef] <asn:4> *__ret
>> kernel/trace/blktrace.c:538:24: sparse: got struct blk_trace *old_bt
kernel/trace/blktrace.c:1218:16: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1218:16: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1218:16: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1218:16: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1218:16: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1218:16: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1218:16: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1218:16: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1218:16: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1218:16: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1225:32: sparse: sparse: incorrect type in initializer (different base types) @@ expected unsigned long long [usertype] sector_from @@ got restricted __be64 const [usertype] sector_from @@
kernel/trace/blktrace.c:1225:32: sparse: expected unsigned long long [usertype] sector_from
kernel/trace/blktrace.c:1225:32: sparse: got restricted __be64 const [usertype] sector_from
kernel/trace/blktrace.c:1227:24: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __be32 [usertype] device_from @@ got unsigned int @@
kernel/trace/blktrace.c:1227:24: sparse: expected restricted __be32 [usertype] device_from
kernel/trace/blktrace.c:1227:24: sparse: got unsigned int
kernel/trace/blktrace.c:1228:24: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __be32 [usertype] device_to @@ got unsigned int @@
kernel/trace/blktrace.c:1228:24: sparse: expected restricted __be32 [usertype] device_to
kernel/trace/blktrace.c:1228:24: sparse: got unsigned int
kernel/trace/blktrace.c:1229:26: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1229:26: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1229:26: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1229:26: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1229:26: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1229:26: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1229:26: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1229:26: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1229:26: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1229:26: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1229:24: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __be64 [usertype] sector_from @@ got unsigned long long @@
kernel/trace/blktrace.c:1229:24: sparse: expected restricted __be64 [usertype] sector_from
kernel/trace/blktrace.c:1229:24: sparse: got unsigned long long
kernel/trace/blktrace.c:1350:33: sparse: sparse: restricted __be32 degrades to integer
kernel/trace/blktrace.c:1350:55: sparse: sparse: restricted __be32 degrades to integer
kernel/trace/blktrace.c:1351:34: sparse: sparse: cast from restricted __be64
kernel/trace/blktrace.c:1576:12: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct blk_trace *bt @@ got struct blk_trace [noderef] <asn:4> *[assigned] __ret @@
kernel/trace/blktrace.c:1576:12: sparse: expected struct blk_trace *bt
kernel/trace/blktrace.c:1576:12: sparse: got struct blk_trace [noderef] <asn:4> *[assigned] __ret
kernel/trace/blktrace.c:1614:18: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct blk_trace [noderef] <asn:4> *__ret @@ got struct blk_trace *[assigned] bt @@
kernel/trace/blktrace.c:1614:18: sparse: expected struct blk_trace [noderef] <asn:4> *__ret
kernel/trace/blktrace.c:1614:18: sparse: got struct blk_trace *[assigned] bt
kernel/trace/blktrace.c:1614:16: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct blk_trace *old_bt @@ got struct blk_trace [noderef] <asn:4> *[assigned] __ret @@
kernel/trace/blktrace.c:1614:16: sparse: expected struct blk_trace *old_bt
kernel/trace/blktrace.c:1614:16: sparse: got struct blk_trace [noderef] <asn:4> *[assigned] __ret
kernel/trace/blktrace.c:1616:23: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct blk_trace [noderef] <asn:4> *__ret @@ got struct blk_trace *old_bt @@
kernel/trace/blktrace.c:1616:23: sparse: expected struct blk_trace [noderef] <asn:4> *__ret
kernel/trace/blktrace.c:1616:23: sparse: got struct blk_trace *old_bt
In file included from include/linux/blkdev.h:4:0,
from kernel/trace/blktrace.c:19:
include/linux/sched.h:1067:42: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
const struct sched_group_energy * const(*sched_domain_energy_f)(int cpu);
^
In file included from include/linux/blkdev.h:14:0,
from kernel/trace/blktrace.c:19:
include/linux/pagemap.h: In function 'fault_in_multipages_readable':
include/linux/pagemap.h:633:16: warning: variable 'c' set but not used [-Wunused-but-set-variable]
volatile char c;
^
vim +536 kernel/trace/blktrace.c
9908c30997b8a7 kernel/trace/blktrace.c Li Zefan 2009-04-14 444
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 445 /*
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 446 * Setup everything required to start tracing
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 447 */
6da127ad0918f9 block/blktrace.c Christof Schmitt 2008-01-11 448 int do_blk_trace_setup(struct request_queue *q, char *name, dev_t dev,
d0deef5b14af7d kernel/trace/blktrace.c Shawn Du 2009-04-14 449 struct block_device *bdev,
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 450 struct blk_user_trace_setup *buts)
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 451 {
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 452 struct blk_trace *old_bt, *bt = NULL;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 453 struct dentry *dir = NULL;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 454 int ret, i;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 455
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 456 if (!buts->buf_size || !buts->buf_nr)
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 457 return -EINVAL;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 458
0497b345e7d067 block/blktrace.c Jens Axboe 2008-10-01 459 strncpy(buts->name, name, BLKTRACE_BDEV_SIZE);
0497b345e7d067 block/blktrace.c Jens Axboe 2008-10-01 460 buts->name[BLKTRACE_BDEV_SIZE - 1] = '\0';
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 461
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 462 /*
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 463 * some device names have larger paths - convert the slashes
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 464 * to underscores for this to work as expected
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 465 */
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 466 for (i = 0; i < strlen(buts->name); i++)
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 467 if (buts->name[i] == '/')
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 468 buts->name[i] = '_';
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 469
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 470 bt = kzalloc(sizeof(*bt), GFP_KERNEL);
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 471 if (!bt)
ad5dd5493a55e4 kernel/trace/blktrace.c Li Zefan 2009-03-27 472 return -ENOMEM;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 473
ad5dd5493a55e4 kernel/trace/blktrace.c Li Zefan 2009-03-27 474 ret = -ENOMEM;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 475 bt->sequence = alloc_percpu(unsigned long);
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 476 if (!bt->sequence)
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 477 goto err;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 478
313e458f81ec38 block/blktrace.c Rusty Russell 2009-02-20 479 bt->msg_data = __alloc_percpu(BLK_TN_MAX_MSG, __alignof__(char));
64565911cdb57c block/blktrace.c Jens Axboe 2008-05-28 480 if (!bt->msg_data)
64565911cdb57c block/blktrace.c Jens Axboe 2008-05-28 481 goto err;
64565911cdb57c block/blktrace.c Jens Axboe 2008-05-28 482
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 483 ret = -ENOENT;
f48fc4d32e24c0 block/blktrace.c Jens Axboe 2009-01-05 484
b5230b56ee6cae kernel/trace/blktrace.c Li Zefan 2009-03-25 485 mutex_lock(&blk_tree_mutex);
f48fc4d32e24c0 block/blktrace.c Jens Axboe 2009-01-05 486 if (!blk_tree_root) {
f48fc4d32e24c0 block/blktrace.c Jens Axboe 2009-01-05 487 blk_tree_root = debugfs_create_dir("block", NULL);
b5230b56ee6cae kernel/trace/blktrace.c Li Zefan 2009-03-25 488 if (!blk_tree_root) {
b5230b56ee6cae kernel/trace/blktrace.c Li Zefan 2009-03-25 489 mutex_unlock(&blk_tree_mutex);
1a17662ea03367 kernel/trace/blktrace.c Li Zefan 2009-03-20 490 goto err;
f48fc4d32e24c0 block/blktrace.c Jens Axboe 2009-01-05 491 }
b5230b56ee6cae kernel/trace/blktrace.c Li Zefan 2009-03-25 492 }
b5230b56ee6cae kernel/trace/blktrace.c Li Zefan 2009-03-25 493 mutex_unlock(&blk_tree_mutex);
f48fc4d32e24c0 block/blktrace.c Jens Axboe 2009-01-05 494
f48fc4d32e24c0 block/blktrace.c Jens Axboe 2009-01-05 495 dir = debugfs_create_dir(buts->name, blk_tree_root);
f48fc4d32e24c0 block/blktrace.c Jens Axboe 2009-01-05 496
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 497 if (!dir)
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 498 goto err;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 499
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 500 bt->dir = dir;
6da127ad0918f9 block/blktrace.c Christof Schmitt 2008-01-11 501 bt->dev = dev;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 502 atomic_set(&bt->dropped, 0);
a404d5576bbe58 kernel/trace/blktrace.c Jan Kara 2013-09-17 503 INIT_LIST_HEAD(&bt->running_list);
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 504
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 505 ret = -EIO;
939b366977d29b block/blktrace.c Arnaldo Carvalho de Melo 2009-02-03 506 bt->dropped_file = debugfs_create_file("dropped", 0444, dir, bt,
939b366977d29b block/blktrace.c Arnaldo Carvalho de Melo 2009-02-03 507 &blk_dropped_fops);
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 508 if (!bt->dropped_file)
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 509 goto err;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 510
02c62304e6af60 block/blktrace.c Alan D. Brunelle 2008-06-11 511 bt->msg_file = debugfs_create_file("msg", 0222, dir, bt, &blk_msg_fops);
02c62304e6af60 block/blktrace.c Alan D. Brunelle 2008-06-11 512 if (!bt->msg_file)
02c62304e6af60 block/blktrace.c Alan D. Brunelle 2008-06-11 513 goto err;
02c62304e6af60 block/blktrace.c Alan D. Brunelle 2008-06-11 514
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 515 bt->rchan = relay_open("trace", dir, buts->buf_size,
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 516 buts->buf_nr, &blk_relay_callbacks, bt);
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 517 if (!bt->rchan)
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 518 goto err;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 519
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 520 bt->act_mask = buts->act_mask;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 521 if (!bt->act_mask)
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 522 bt->act_mask = (u16) -1;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 523
9908c30997b8a7 kernel/trace/blktrace.c Li Zefan 2009-04-14 524 blk_trace_setup_lba(bt, bdev);
d0deef5b14af7d kernel/trace/blktrace.c Shawn Du 2009-04-14 525
d0deef5b14af7d kernel/trace/blktrace.c Shawn Du 2009-04-14 526 /* overwrite with user settings */
d0deef5b14af7d kernel/trace/blktrace.c Shawn Du 2009-04-14 527 if (buts->start_lba)
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 528 bt->start_lba = buts->start_lba;
d0deef5b14af7d kernel/trace/blktrace.c Shawn Du 2009-04-14 529 if (buts->end_lba)
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 530 bt->end_lba = buts->end_lba;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 531
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 532 bt->pid = buts->pid;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 533 bt->trace_state = Blktrace_setup;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 534
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 535 ret = -EBUSY;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 @536 old_bt = xchg(&q->blk_trace, bt);
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 537 if (old_bt) {
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 @538 (void) xchg(&q->blk_trace, old_bt);
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 539 goto err;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 540 }
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 541
17ba97e347bec9 kernel/trace/blktrace.c Li Zefan 2009-03-27 542 if (atomic_inc_return(&blk_probes_ref) == 1)
cbe28296eb1ac4 kernel/trace/blktrace.c Li Zefan 2009-03-20 543 blk_register_tracepoints();
cbe28296eb1ac4 kernel/trace/blktrace.c Li Zefan 2009-03-20 544
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 545 return 0;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 546 err:
ad5dd5493a55e4 kernel/trace/blktrace.c Li Zefan 2009-03-27 547 blk_trace_free(bt);
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 548 return ret;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 549 }
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 550
:::::: The code at line 536 was first introduced by commit
:::::: 2056a782f8e7e65fd4bfd027506b4ce1c5e9ccd4 [PATCH] Block queue IO tracing support (blktrace) as of 2006-03-23
:::::: TO: Jens Axboe <axboe(a)suse.de>
:::::: CC: Jens Axboe <axboe(a)suse.de>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 3 months