Re: [Call for Testing] Syzkaller (kernel fuzzing)

2017-10-25 Thread Utkarsh Anand
BTW, the executables are for amd64. Sorry for sharing it on tech-kern.

Regards,
Utkarsh Anand

On 26 October 2017 at 12:20, Utkarsh Anand  wrote:

> You can now access the binaries from: http://ftp.netbsd.org/pub/
> NetBSD/misc/utkarsh009/syzkaller/syzkaller-binaries.tar.gz
> I'll keep updating them from time to time.
>
> Regards,
> Utkarsh Anand
>
> On 26 October 2017 at 08:03, Utkarsh Anand  wrote:
>
>> Hello,
>> I have been working on adding support for NetBSD in syzkaller:
>> github.com/google/syzkaller
>> I would like to ask interested volunteers to test the binaries (check
>> attachments).
>> Command to run the binaries: ./syz-stress -executor ./syz-executor
>> Let it run on the machine. It might take quite long to finish, so you
>> could probably let it running overnight and then share the last few
>> lines of the output (basically, the conclusive part). Even if you're
>> not running the latest build, the results are of great help. I'll
>> resend the updated binaries, in case there is a change in the code.
>>
>> Regards,
>> Utkarsh Anand
>> Sent from my iPad
>>
>
>


Re: [Call for Testing] Syzkaller (kernel fuzzing)

2017-10-25 Thread Utkarsh Anand
You can now access the binaries from:
http://ftp.netbsd.org/pub/NetBSD/misc/utkarsh009/syzkaller/syzkaller-binaries.tar.gz
I'll keep updating them from time to time.

Regards,
Utkarsh Anand

On 26 October 2017 at 08:03, Utkarsh Anand  wrote:

> Hello,
> I have been working on adding support for NetBSD in syzkaller:
> github.com/google/syzkaller
> I would like to ask interested volunteers to test the binaries (check
> attachments).
> Command to run the binaries: ./syz-stress -executor ./syz-executor
> Let it run on the machine. It might take quite long to finish, so you
> could probably let it running overnight and then share the last few
> lines of the output (basically, the conclusive part). Even if you're
> not running the latest build, the results are of great help. I'll
> resend the updated binaries, in case there is a change in the code.
>
> Regards,
> Utkarsh Anand
> Sent from my iPad
>


Proposed changes for PR kern/52639 - kernhist(9)

2017-10-25 Thread Paul Goyette

The attached diffs implement the following changes in the KERNHIST
feature, and is the proposed fix for PR kern/52639.  (The diffs are
compressed to allow them to be attached to this Email;  they would
otherwise exceed message-size limitations.)

I would appreciate your review and (constructive) comments.

Since this PR is interfering with other developers' efforts, I would
like to get this committed within the next few days.

Changes:
* All history arguments are stored as uintmax_t values, both in the
  kernel and in the structures used for exporting the history data
  to userland.  This avoids problems on some architectures where
  passing a 64-bit (or larger) value to printf() can result in
  printf() processing the value as multiple arguments.  (This is
  particularly problematic when printf()'s format string is not a
  literal, since in that case the compiler cannot know how large
  each argument should be.)

* All [1] existing users of KERNHIST have had their format strings
  updated.  Each format specifier now includes an explicit length
  modifier 'j' to refer to numeric values of the size of unitmax_t.

* All [1] existing users of KERNHIST have had their format strings
  updated to replace uses of "%p" with "%#jx", and the pointer
  arguments are now cast to (uintptr_t) before being subsequently
  cast to (uintmax_t).  This is needed to avoid compiler warnings
  about casting "pointer to integer of a different size."

* vmstat(1) has been modified to handle the new size of arguments
  in the history data as exported by sysctl().

* The kernhist(9) man-page has been updated to note the additional
  requirements imposed on the format strings, along with several
  other minor changes.

Note that it would have been possible to use an explicit length for
the history arguments, for example uint64_t, rather than uintmax_t.
But that would require another "rototill" of all the users in the
future when we find an architecture that supports a larger size.
Also, the printf() format specifiers for explicitly-sized values,
such as "%"PRIu64", is much more verbose (and less aesthetically
appealing, IMHO) than simply using "%ju".

[1] Further note that I've tried very hard to find all "the existing
users of KERNHIST" but it is possible that I've missed a couple.  I
would be glad to update any stragglers that anyone identifies.


+--+--++
| Paul Goyette | PGP Key fingerprint: | E-mail addresses:  |
| (Retired)| FA29 0E3B 35AF E8AE 6651 | paul at whooppee dot com   |
| Kernel Developer | 0786 F758 55DE 53BA 7731 | pgoyette at netbsd dot org |
+--+--++

diffs.text.gz
Description: Binary data


Re: Deadlock on fragmented memory?

2017-10-25 Thread Joerg Sonnenberger
On Wed, Oct 25, 2017 at 11:49:01AM +0700, Robert Elz wrote:
> Most applications would never bother, but the ones that do a lot of
> running of other processes (say, sh, and probably make) could make use
> of this and cut down on a lot of both data copying and page contention.

For sh and make it would also be nice to use posix_spawn for at least
the simple cases. That saves a lot of pmap manipulations...

Joerg


Re: hand over arg/env pages on exec (was: Deadlock on fragmented memory?)

2017-10-25 Thread Robert Elz
Date:Wed, 25 Oct 2017 11:29:34 +0200
From:Edgar =?iso-8859-1?B?RnXf?= 
Message-ID:  <20171025092934.gv73...@trav.math.uni-bonn.de>

  | vfork childs aside, the kernel could just zero out what it wouldn't copy; 
  | no new interface needed.

Yes, it could, but it should not need to.

  | However, how do you deal with the case that the strings are scattered
  | around the dying process' address space?

The old way.

  | Or is it intentional to have a new exec interface only to be used when the 
  | caller knows the arguments are contigous?

Yes, intentional - processes using it would have to know what they're
doing, and deliberately plan to set things up correctly.   (Maybe there
could be a library function to help, but it might not.)

There are all kinds of issues, like the arg pointers, which can be just
as much an issue as the args themselves - I would have the calling
process make those be page relative offsets (from the start of the
arg list (or env list) and then have the exec code create a new list
of pointers by (validating and then) adding the base addr of the arg
pages in the new process's addr space (a separate copy, so the
originals remain - which isn't important for the args, but allows the
env to simply be passed along unchanged, and the kernel could detect
that).   Perhaps.

kre



hand over arg/env pages on exec (was: Deadlock on fragmented memory?)

2017-10-25 Thread Edgar Fuß
vfork childs aside, the kernel could just zero out what it wouldn't copy; 
no new interface needed.
However, how do you deal with the case that the strings are scattered around 
the dying process' address space?
Or is it intentional to have a new exec interface only to be used when the 
caller knows the arguments are contigous?