#ifndef _PERF_TARGET_H #define _PERF_TARGET_H #include #include struct target { const char *pid; const char *tid; const char *cpu_list; const char *uid_str; uid_t uid; bool system_wide; bool uses_mmap; bool default_per_cpu; bool per_thread; }; enum target_errno { TARGET_ERRNO__SUCCESS = 0, /* * Choose an arbitrary negative big number not to clash with standard * errno since SUS requires the errno has distinct positive values. * See 'Issue 6' in the link below. * * http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/errno.h.html */ __TARGET_ERRNO__START = -10000, /* for target__validate() */ TARGET_ERRNO__PID_OVERRIDE_CPU = __TARGET_ERRNO__START, TARGET_ERRNO__PID_OVERRIDE_UID, TARGET_ERRNO__UID_OVERRIDE_CPU, TARGET_ERRNO__PID_OVERRIDE_SYSTEM, TARGET_ERRNO__UID_OVERRIDE_SYSTEM, TARGET_ERRNO__SYSTEM_OVERRIDE_THREAD, /* for target__parse_uid() */ TARGET_ERRNO__INVALID_UID, TARGET_ERRNO__USER_NOT_FOUND, __TARGET_ERRNO__END, }; enum target_errno target__validate(struct target *target); enum target_errno target__parse_uid(struct target *target); int target__strerror(struct target *target, int errnum, char *buf, size_t buflen); static inline bool target__has_task(struct target *target) { return target->tid || target->pid || target->uid_str; } static inline bool target__has_cpu(struct target *target) { return target->system_wide || target->cpu_list; } static inline bool target__none(struct target *target) { return !target__has_task(target) && !target__has_cpu(target); } static inline bool target__uses_dummy_map(struct target *target) { bool use_dummy = false; if (target->default_per_cpu) use_dummy = target->per_thread ? true : false; else if (target__has_task(target) || (!target__has_cpu(target) && !target->uses_mmap)) use_dummy = true; return use_dummy; } #endif /* _PERF_TARGET_H */ ers/usb/gadget/udc/fsl_qe_udc.c?id=d15c9ede6123dbce14c17eb9ced229e488002735'>commitdiff
'/>
AgeCommit message (Expand)AuthorFilesLines
context:
space:
mode:
authorSriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>2017-01-09 16:00:44 +0530
committerJ. Bruce Fields <bfields@redhat.com>2017-01-12 16:14:47 -0500
commitce1ca7d2d140a1f4aaffd297ac487f246963dd2f (patch)
tree5aeab5e0cb6ef404c894a18251588278b9432a2c /net/nfc/nci/spi.c
parent546125d1614264d26080817d0c8cddb9b25081fa (diff)
svcrdma: avoid duplicate dma unmapping during error recovery
In rdma_read_chunk_frmr() when ib_post_send() fails, the error code path invokes ib_dma_unmap_sg() to unmap the sg list. It then invokes svc_rdma_put_frmr() which in turn tries to unmap the same sg list through ib_dma_unmap_sg() again. This second unmap is invalid and could lead to problems when the iova being unmapped is subsequently reused. Remove the call to unmap in rdma_read_chunk_frmr() and let svc_rdma_put_frmr() handle it. Fixes: 412a15c0fe53 ("svcrdma: Port to new memory registration API") Cc: stable@vger.kernel.org Signed-off-by: Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com> Reviewed-by: Chuck Lever <chuck.lever@oracle.com> Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'net/nfc/nci/spi.c')