/* * Copyright 2013, Michael Ellerman, IBM Corp. * Licensed under GPLv2. */ #ifndef _SELFTESTS_POWERPC_UTILS_H #define _SELFTESTS_POWERPC_UTILS_H #define __cacheline_aligned __attribute__((aligned(128))) #include #include #include #include "reg.h" /* Avoid headaches with PRI?64 - just use %ll? always */ typedef unsigned long long u64; typedef signed long long s64; /* Just for familiarity */ typedef uint32_t u32; typedef uint16_t u16; typedef uint8_t u8; void test_harness_set_timeout(uint64_t time); int test_harness(int (test_function)(void), char *name); extern void *get_auxv_entry(int type); int pick_online_cpu(void); static inline bool have_hwcap(unsigned long ftr) { return ((unsigned long)get_auxv_entry(AT_HWCAP) & ftr) == ftr; } #ifdef AT_HWCAP2 static inline bool have_hwcap2(unsigned long ftr2) { return ((unsigned long)get_auxv_entry(AT_HWCAP2) & ftr2) == ftr2; } #else static inline bool have_hwcap2(unsigned long ftr2) { return false; } #endif /* Yes, this is evil */ #define FAIL_IF(x) \ do { \ if ((x)) { \ fprintf(stderr, \ "[FAIL] Test FAILED on line %d\n", __LINE__); \ return 1; \ } \ } while (0) /* The test harness uses this, yes it's gross */ #define MAGIC_SKIP_RETURN_VALUE 99 #define SKIP_IF(x) \ do { \ if ((x)) { \ fprintf(stderr, \ "[SKIP] Test skipped on line %d\n", __LINE__); \ return MAGIC_SKIP_RETURN_VALUE; \ } \ } while (0) #define _str(s) #s #define str(s) _str(s) /* POWER9 feature */ #ifndef PPC_FEATURE2_ARCH_3_00 #define PPC_FEATURE2_ARCH_3_00 0x00800000 #endif #endif /* _SELFTESTS_POWERPC_UTILS_H */ ate-remove&id=690e5325b8c7d5db05fc569c0f7b888bb4248272'>refslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2017-01-24 14:50:19 +0100
committerJens Axboe <axboe@fb.com>2017-01-24 07:55:53 -0700
commit690e5325b8c7d5db05fc569c0f7b888bb4248272 (patch)
treeb9c39916a4397b1eb628e07e4fc6aff91219e393 /tools/perf/builtin-data.c
parenta4685d2f58e2230d4e27fb2ee581d7ea35e5d046 (diff)
block: fix use after free in __blkdev_direct_IO
We can't dereference the dio structure after submitting the last bio for this request, as I/O completion might have happened before the code is run. Introduce a local is_sync variable instead. Fixes: 542ff7bf ("block: new direct I/O implementation") Signed-off-by: Christoph Hellwig <hch@lst.de> Reported-by: Matias Bjørling <m@bjorling.me> Tested-by: Matias Bjørling <m@bjorling.me> Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'tools/perf/builtin-data.c')