/// Find nested lock+irqsave functions that use the same flags variables /// // Confidence: High // Copyright: (C) 2010-2012 Nicolas Palix. GPLv2. // Copyright: (C) 2010-2012 Julia Lawall, INRIA/LIP6. GPLv2. // Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6. GPLv2. // URL: http://coccinelle.lip6.fr/ // Comments: // Options: --no-includes --include-headers virtual context virtual org virtual report @r exists@ expression lock1,lock2,flags; position p1,p2; @@ ( spin_lock_irqsave@p1(lock1,flags) | read_lock_irqsave@p1(lock1,flags) | write_lock_irqsave@p1(lock1,flags) ) ... when != flags ( spin_lock_irqsave(lock1,flags) | read_lock_irqsave(lock1,flags) | write_lock_irqsave(lock1,flags) | spin_lock_irqsave@p2(lock2,flags) | read_lock_irqsave@p2(lock2,flags) | write_lock_irqsave@p2(lock2,flags) ) @d exists@ expression f <= r.flags; expression lock1,lock2,flags; position r.p1, r.p2; @@ ( *spin_lock_irqsave@p1(lock1,flags) | *read_lock_irqsave@p1(lock1,flags) | *write_lock_irqsave@p1(lock1,flags) ) ... when != f ( *spin_lock_irqsave@p2(lock2,flags) | *read_lock_irqsave@p2(lock2,flags) | *write_lock_irqsave@p2(lock2,flags) ) // ---------------------------------------------------------------------- @script:python depends on d && org@ p1 << r.p1; p2 << r.p2; @@ cocci.print_main("original lock",p1) cocci.print_secs("nested lock+irqsave that reuses flags",p2) @script:python depends on d && report@ p1 << r.p1; p2 << r.p2; @@ msg="ERROR: nested lock+irqsave that reuses flags from line %s." % (p1[0].line) coccilib.report.print_report(p2[0], msg)
summaryrefslogtreecommitdiff
path: root/include/trace/events/napi.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-12-14 11:01:00 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2016-12-14 11:01:00 -0800
commit775a2e29c3bbcf853432f47d3caa9ff8808807ad (patch)
tree614a7481b68dc9b0b628f392ab9bbdc53bbfe447 /include/trace/events/napi.h
parent2a4c32edd39b7de166e723b1991abcde4db3a701 (diff)
parentef548c551e72dbbdcc6d9ed7c7b3b01083fea8e2 (diff)
Merge tag 'dm-4.10-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm
Pull device mapper updates from Mike Snitzer: - various fixes and improvements to request-based DM and DM multipath - some locking improvements in DM bufio - add Kconfig option to disable the DM block manager's extra locking which mainly serves as a developer tool - a few bug fixes to DM's persistent-data - a couple changes to prepare for multipage biovec support in the block layer - various improvements and cleanups in the DM core, DM cache, DM raid and DM crypt - add ability to have DM crypt use keys from the kernel key retention service - add a new "error_writes" feature to the DM flakey target, reads are left unchanged in this mode * tag 'dm-4.10-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm: (40 commits) dm flakey: introduce "error_writes" feature dm cache policy smq: use hash_32() instead of hash_32_generic() dm crypt: reject key strings containing whitespace chars dm space map: always set ev if sm_ll_mutate() succeeds dm space map metadata: skip useless memcpy in metadata_ll_init_index() dm space map metadata: fix 'struct sm_metadata' leak on failed create Documentation: dm raid: define data_offset status field dm raid: fix discard support regression dm raid: don't allow "write behind" with raid4/5/6 dm mpath: use hw_handler_params if attached hw_handler is same as requested dm crypt: add ability to use keys from the kernel key retention service dm array: remove a dead assignment in populate_ablock_with_values() dm ioctl: use offsetof() instead of open-coding it dm rq: simplify use_blk_mq initialization dm: use blk_set_queue_dying() in __dm_destroy() dm bufio: drop the lock when doing GFP_NOIO allocation dm bufio: don't take the lock in dm_bufio_shrink_count dm bufio: avoid sleeping while holding the dm_bufio lock dm table: simplify dm_table_determine_type() dm table: an 'all_blk_mq' table must be loaded for a blk-mq DM device ...
Diffstat (limited to 'include/trace/events/napi.h')