Re: misc/check-installed-headers-c failing due to upstream kernel change
On 1/23/19 8:51 AM, Carlos O'Donell wrote: > On 1/23/19 10:57 AM, Ben Hutchings wrote: >> On Mon, 2019-01-21 at 14:56 -0800, Vineet Gupta wrote: >>> Hi, >>> >>> It seems a recent upstream kernel change (went in 5.0-rcX) 81c9d43f9487 >>> ("kernel/sysctl: add panic_print into sysctl") trips one of the glibc tests. >>> >>> FAIL: misc/check-installed-headers-c >>> :: sys/sysctl.h *** Obsolete types detected: ~/install/compilers/arc-linux-gnu/sysroot/usr/include/linux /sysctl.h: KERN_PANIC_PRINT=78, /* ulong: bitmask to print system info on panic */ >>> >>> It doesn't seem to like ulong (inside a comment). I don't have enough foo >>> to fix >>> it, but wanted to bring it to notice anyways. >> >> This additions looks like a mistake, anyway - Linux's binary sysctl >> interface is only there for ancient compatibility and no new sysctls >> should be added to this enumeration. > > Just to be clear, this glibc test failure is a false positive [1], and > we're working to correct this [2]. However, if this is also not needed on > the kernel side, then that's also OK with us :-) > [1] https://www.sourceware.org/ml/libc-alpha/2019-01/msg00413.html [2] https://www.sourceware.org/ml/libc-alpha/2019-01/msg00513.html Great, I didn't skim thru the mailing list before posting this. So this is already known and being worked on ! Does it make sense to add the minimal fix for 2.29 ? It is likely in near future, people using the released glibc with newer kernel will run into this, unless kernel folks zap this quickly, within the current release. -Vineet ___ linux-snps-arc mailing list linux-snps-arc@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-snps-arc
Re: misc/check-installed-headers-c failing due to upstream kernel change
On 1/23/19 12:13 PM, Vineet Gupta wrote: > On 1/23/19 8:51 AM, Carlos O'Donell wrote: >> On 1/23/19 10:57 AM, Ben Hutchings wrote: >>> On Mon, 2019-01-21 at 14:56 -0800, Vineet Gupta wrote: Hi, It seems a recent upstream kernel change (went in 5.0-rcX) 81c9d43f9487 ("kernel/sysctl: add panic_print into sysctl") trips one of the glibc tests. FAIL: misc/check-installed-headers-c > :: sys/sysctl.h > > *** Obsolete types detected: > ~/install/compilers/arc-linux-gnu/sysroot/usr/include/linux /sysctl.h: > KERN_PANIC_PRINT=78, /* ulong: bitmask to print system info on panic */ It doesn't seem to like ulong (inside a comment). I don't have enough foo to fix it, but wanted to bring it to notice anyways. >>> >>> This additions looks like a mistake, anyway - Linux's binary sysctl >>> interface is only there for ancient compatibility and no new sysctls >>> should be added to this enumeration. >> >> Just to be clear, this glibc test failure is a false positive [1], and >> we're working to correct this [2]. However, if this is also not needed on >> the kernel side, then that's also OK with us :-) >> > > [1] https://www.sourceware.org/ml/libc-alpha/2019-01/msg00413.html > [2] https://www.sourceware.org/ml/libc-alpha/2019-01/msg00513.html > > Great, I didn't skim thru the mailing list before posting this. So this is > already > known and being worked on ! > > Does it make sense to add the minimal fix for 2.29 ? It is likely in near > future, > people using the released glibc with newer kernel will run into this, unless > kernel folks zap this quickly, within the current release. I don't think there is any rush. Review [2] and give Zack any feedback on correctness? We commit to master, and backport to the release branch for 2.29 when ready. Developers should be using the release branches. Distributions already use the release branches to get continued security fixes and bug fixes. -- Cheers, Carlos. ___ linux-snps-arc mailing list linux-snps-arc@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-snps-arc
Semantics of symbol address in perf report -v
Hi, I noticed a small anomaly in perf report -v output on ARC and x86 as well. A simple program which sits in tight loop, compiled for x86_64 void main() { while(1) {} } $ gcc -g tight.c $ ./a.out & $ perf record -e cycles -p 26703 $ perf report -n -v --stdio | egrep "(main|Symbol)" |# Overhead Samples Command Shared Object Symbol | 99.93%55753 a.out /home/arc/test/a.out 0x4da B [.] main | ^ The printer address for Symbols is *not* the actual address in elf, but rather VMA start offset. 0x4da = 0x4004da - 0x0040 $ objdump -d ./a.out | 004004d6 : | 4004d6: 55 push %rbp | 4004d7: 48 89 e5mov%rsp,%rbp | 4004da: eb fe jmp4004da | 4004dc: 0f 1f 40 00 nopl 0x0(%rax) $ readelf -a ./a.out | Program Headers: | Type Offset VirtAddr PhysAddr | FileSizMemSiz Flags Align | Program Headers: | LOAD 0x 0x0040 0x0040 0x068c 0x068c R E20 This is problematic in narrowing down the hotspot instruction, when the binary itself is. One needs to do the offset addition manually to find the actual hotspot location. | 99.79% 100064 a.out /home/arc/test/a.out 0x4da B [.] 0x04da Is this considered an issue ? Would the fix to print the actual symbol address (and recorded in raw perf event data) break some existing tooling etc. -Vineet ___ linux-snps-arc mailing list linux-snps-arc@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-snps-arc
[PATCH v2 3/3] bitops.h: set_mask_bits() to return old value
| > Also, set_mask_bits is used in fs quite a bit and we can possibly come up | > with a generic llsc based implementation (w/o the cmpxchg loop) | | May I also suggest changing the return value of set_mask_bits() to old. | | You can compute the new value given old, but you cannot compute the old | value given new, therefore old is the better return value. Also, no | current user seems to use the return value, so changing it is without | risk. Link: http://lkml.kernel.org/g/20150807110955.gh16...@twins.programming.kicks-ass.net Suggested-by: Peter Zijlstra Cc: Miklos Szeredi Cc: Ingo Molnar Cc: Jani Nikula Cc: Chris Wilson Cc: Andrew Morton Reviewed-by: Anthony Yznaga Acked-by: Will Deacon Signed-off-by: Vineet Gupta --- include/linux/bitops.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/linux/bitops.h b/include/linux/bitops.h index 705f7c442691..602af23b98c7 100644 --- a/include/linux/bitops.h +++ b/include/linux/bitops.h @@ -246,7 +246,7 @@ static __always_inline void __assign_bit(long nr, volatile unsigned long *addr, new__ = (old__ & ~mask__) | bits__; \ } while (cmpxchg(ptr, old__, new__) != old__); \ \ - new__; \ + old__; \ }) #endif -- 2.7.4 ___ linux-snps-arc mailing list linux-snps-arc@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-snps-arc
[PATCH v2 0/3] Replace opencoded set_mask_bits
Hi, Repost of [1] rebased on 5.0-rc3 + accumulated Acked-by/Reviewed-by. No code changes since v1. Please consider applying. [1] http://lists.infradead.org/pipermail/linux-snps-arc/2019-January/005201.html Thx, -Vineet Vineet Gupta (3): coredump: Replace opencoded set_mask_bits() fs: inode_set_flags() replace opencoded set_mask_bits() bitops.h: set_mask_bits() to return old value fs/exec.c | 7 +-- fs/inode.c | 8 +--- include/linux/bitops.h | 2 +- 3 files changed, 3 insertions(+), 14 deletions(-) -- 2.7.4 ___ linux-snps-arc mailing list linux-snps-arc@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-snps-arc
[PATCH v2 2/3] fs: inode_set_flags() replace opencoded set_mask_bits()
It seems that 5f16f3225b0624 and 00a1a053ebe5, both with same commitlog ("ext4: atomically set inode->i_flags in ext4_set_inode_flags()") introduced the set_mask_bits API, but somehow missed not using it in ext4 in the end Also, set_mask_bits is used in fs quite a bit and we can possibly come up with a generic llsc based implementation (w/o the cmpxchg loop) Cc: Alexander Viro Cc: Theodore Ts'o Cc: Peter Zijlstra (Intel) Cc: linux-fsde...@vger.kernel.org Cc: linux-ker...@vger.kernel.org Reviewed-by: Anthony Yznaga Signed-off-by: Vineet Gupta --- fs/inode.c | 8 +--- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/fs/inode.c b/fs/inode.c index 0cd47fe0dbe5..799b0c4beda8 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -2096,14 +2096,8 @@ EXPORT_SYMBOL(inode_dio_wait); void inode_set_flags(struct inode *inode, unsigned int flags, unsigned int mask) { - unsigned int old_flags, new_flags; - WARN_ON_ONCE(flags & ~mask); - do { - old_flags = READ_ONCE(inode->i_flags); - new_flags = (old_flags & ~mask) | flags; - } while (unlikely(cmpxchg(&inode->i_flags, old_flags, - new_flags) != old_flags)); + set_mask_bits(&inode->i_flags, mask, flags); } EXPORT_SYMBOL(inode_set_flags); -- 2.7.4 ___ linux-snps-arc mailing list linux-snps-arc@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-snps-arc
[PATCH v2 1/3] coredump: Replace opencoded set_mask_bits()
Cc: Alexander Viro Cc: Peter Zijlstra (Intel) Cc: linux-fsde...@vger.kernel.org Cc: linux-ker...@vger.kernel.org Link: http://lkml.kernel.org/g/20150807115710.ga16...@redhat.com Reviewed-by: Anthony Yznaga Acked-by: Oleg Nesterov Signed-off-by: Vineet Gupta --- fs/exec.c | 7 +-- 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/fs/exec.c b/fs/exec.c index fb72d36f7823..df7f05362283 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -1944,15 +1944,10 @@ EXPORT_SYMBOL(set_binfmt); */ void set_dumpable(struct mm_struct *mm, int value) { - unsigned long old, new; - if (WARN_ON((unsigned)value > SUID_DUMP_ROOT)) return; - do { - old = READ_ONCE(mm->flags); - new = (old & ~MMF_DUMPABLE_MASK) | value; - } while (cmpxchg(&mm->flags, old, new) != old); + set_mask_bits(&mm->flags, MMF_DUMPABLE_MASK, value); } SYSCALL_DEFINE3(execve, -- 2.7.4 ___ linux-snps-arc mailing list linux-snps-arc@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-snps-arc