Re: misc/check-installed-headers-c failing due to upstream kernel change

2019-01-23 Thread Vineet Gupta
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

2019-01-23 Thread Carlos O'Donell
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

2019-01-23 Thread Vineet Gupta
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

2019-01-23 Thread Vineet Gupta
| > 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

2019-01-23 Thread Vineet Gupta
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()

2019-01-23 Thread Vineet Gupta
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()

2019-01-23 Thread Vineet Gupta
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