mirror of
https://github.com/torvalds/linux.git
synced 2026-09-24 06:24:02 +02:00
nvme: add context annotations for nvme_passthru_{start|stop}
Annotate nvme_passthru_start() and nvme_passthru_end() for Clang context/thread-safety analysis. The __cond_acquires() and __cond_releases() annotations model conditional lock acquisition and release based on a function's return value. Use a nonzero return value as the abstract condition denoting that the associated locks have been acquired or released. This allows the analyzer to track the lock state across the nvme_passthru_start() / nvme_passthru_end() pair and verify correct locking semantics. Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Nilay Shroff <nilay@linux.ibm.com> Signed-off-by: Keith Busch <kbusch@kernel.org>
This commit is contained in:
parent
f6f7849c16
commit
a6732bd800
|
|
@ -1300,10 +1300,16 @@ static inline void nvme_auth_revoke_tls_key(struct nvme_ctrl *ctrl) {};
|
|||
|
||||
u32 nvme_command_effects(struct nvme_ctrl *ctrl, struct nvme_ns *ns,
|
||||
u8 opcode);
|
||||
u32 nvme_passthru_start(struct nvme_ctrl *ctrl, struct nvme_ns *ns, u8 opcode);
|
||||
u32 nvme_passthru_start(struct nvme_ctrl *ctrl, struct nvme_ns *ns, u8 opcode)
|
||||
__cond_acquires(nonzero, &ctrl->subsys->lock)
|
||||
__cond_acquires(nonzero, &ctrl->scan_lock);
|
||||
|
||||
int nvme_execute_rq(struct request *rq, bool at_head);
|
||||
u32 nvme_passthru_end(struct nvme_ctrl *ctrl, struct nvme_ns *ns, u32 effects,
|
||||
struct nvme_command *cmd, int status);
|
||||
struct nvme_command *cmd, int status)
|
||||
__cond_releases(nonzero, &ctrl->scan_lock)
|
||||
__cond_releases(nonzero, &ctrl->subsys->lock);
|
||||
|
||||
struct nvme_ctrl *nvme_ctrl_from_file(struct file *file);
|
||||
struct nvme_ns *nvme_find_get_ns(struct nvme_ctrl *ctrl, unsigned nsid);
|
||||
bool nvme_get_ns(struct nvme_ns *ns);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user