aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--prog/target.go6
-rw-r--r--tools/syz-trace2syz/proggen/proggen.go2
-rw-r--r--tools/syz-trace2syz/proggen/proggen_test.go10
3 files changed, 17 insertions, 1 deletions
diff --git a/prog/target.go b/prog/target.go
index f99c45c5b..56fbb860d 100644
--- a/prog/target.go
+++ b/prog/target.go
@@ -264,6 +264,12 @@ func (pg *ProgGen) Allocate(size uint64) uint64 {
return pg.ma.alloc(nil, size)
}
+func (pg *ProgGen) AllocateVMA(npages uint64) uint64 {
+ psize := pg.target.PageSize
+ addr := pg.ma.alloc(nil, (npages+1)*psize)
+ return (addr + psize - 1) & ^(psize - 1)
+}
+
func (pg *ProgGen) Finalize() (*Prog, error) {
if err := pg.p.validate(); err != nil {
return nil, err
diff --git a/tools/syz-trace2syz/proggen/proggen.go b/tools/syz-trace2syz/proggen/proggen.go
index 967167fe9..a1394d057 100644
--- a/tools/syz-trace2syz/proggen/proggen.go
+++ b/tools/syz-trace2syz/proggen/proggen.go
@@ -167,7 +167,7 @@ func genVma(syzType *prog.VmaType, _ parser.IrType, ctx *Context) prog.Arg {
if syzType.RangeBegin != 0 || syzType.RangeEnd != 0 {
npages = syzType.RangeEnd
}
- return prog.MakeVmaPointerArg(syzType, ctx.pg.Allocate(ctx.Target.PageSize), npages)
+ return prog.MakeVmaPointerArg(syzType, ctx.pg.AllocateVMA(npages), npages)
}
func genArray(syzType *prog.ArrayType, traceType parser.IrType, ctx *Context) prog.Arg {
diff --git a/tools/syz-trace2syz/proggen/proggen_test.go b/tools/syz-trace2syz/proggen/proggen_test.go
index 1e7a5f3a6..8f56de2d5 100644
--- a/tools/syz-trace2syz/proggen/proggen_test.go
+++ b/tools/syz-trace2syz/proggen/proggen_test.go
@@ -62,6 +62,16 @@ func TestParseTraceBasic(t *testing.T) {
}
}
+func TestParseVMA(t *testing.T) {
+ test := `pipe({0x0, 0x1}) = 0
+ shmget(0x0, 0x1, 0x2, 0x3) = 0`
+ p := parseSingleTrace(t, test)
+ expectedSeq := "pipe-shmget"
+ if p.String() != expectedSeq {
+ t.Fatalf("expected: %s != %s", expectedSeq, p.String())
+ }
+}
+
func TestParseTraceInnerResource(t *testing.T) {
test := `pipe([5,6]) = 0
write(6, "\xff\xff\xfe\xff", 4) = 4`