Commit 5dd7ed2e811d5cd12f31fb7f0c5ad0107d494a12
Committed by
James Bottomley
1 parent
05aea6e7e4
Exists in
master
and in
39 other branches
[SCSI] target: Minor sparse warning fixes and annotations
This patch addresses the majority of sparse warnings and adds proper locking annotations. It also fixes the dubious one-bit signed bitfield, for which the signed one-bit types can be 0 or -1 which can cause a problem if someone ever checks if (foo->lu_gp_assoc == 1). The current code is fine because everyone just checks zero vs non-zero. But Sparse complains about it so lets change it. The warnings look like this: include/target/target_core_base.h:228:26: error: dubious one-bit signed bitfield Signed-off-by: Dan Carpenter <error27@gmail.com> Signed-off-by: Fubo Chen <fubo.chen@gmail.com> Signed-off-by: Nicholas A. Bellinger <nab@linux-iscsi.org> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Showing 8 changed files with 18 additions and 13 deletions Side-by-side Diff
drivers/target/target_core_device.c
... | ... | @@ -589,6 +589,7 @@ |
589 | 589 | * Called with struct se_device->se_port_lock spinlock held. |
590 | 590 | */ |
591 | 591 | static void core_release_port(struct se_device *dev, struct se_port *port) |
592 | + __releases(&dev->se_port_lock) __acquires(&dev->se_port_lock) | |
592 | 593 | { |
593 | 594 | /* |
594 | 595 | * Wait for any port reference for PR ALL_TG_PT=1 operation |
drivers/target/target_core_fabric_lib.c
... | ... | @@ -34,6 +34,7 @@ |
34 | 34 | #include <target/target_core_base.h> |
35 | 35 | #include <target/target_core_device.h> |
36 | 36 | #include <target/target_core_transport.h> |
37 | +#include <target/target_core_fabric_lib.h> | |
37 | 38 | #include <target/target_core_fabric_ops.h> |
38 | 39 | #include <target/target_core_configfs.h> |
39 | 40 |
drivers/target/target_core_pscsi.c
... | ... | @@ -441,6 +441,7 @@ |
441 | 441 | struct pscsi_dev_virt *pdv, |
442 | 442 | struct se_subsystem_dev *se_dev, |
443 | 443 | struct se_hba *hba) |
444 | + __releases(sh->host_lock) | |
444 | 445 | { |
445 | 446 | struct se_device *dev; |
446 | 447 | struct pscsi_hba_virt *phv = (struct pscsi_hba_virt *)pdv->pdv_se_hba->hba_ptr; |
... | ... | @@ -488,6 +489,7 @@ |
488 | 489 | struct pscsi_dev_virt *pdv, |
489 | 490 | struct se_subsystem_dev *se_dev, |
490 | 491 | struct se_hba *hba) |
492 | + __releases(sh->host_lock) | |
491 | 493 | { |
492 | 494 | struct se_device *dev; |
493 | 495 | struct pscsi_hba_virt *phv = (struct pscsi_hba_virt *)pdv->pdv_se_hba->hba_ptr; |
... | ... | @@ -522,6 +524,7 @@ |
522 | 524 | struct pscsi_dev_virt *pdv, |
523 | 525 | struct se_subsystem_dev *se_dev, |
524 | 526 | struct se_hba *hba) |
527 | + __releases(sh->host_lock) | |
525 | 528 | { |
526 | 529 | struct se_device *dev; |
527 | 530 | struct pscsi_hba_virt *phv = (struct pscsi_hba_virt *)pdv->pdv_se_hba->hba_ptr; |
drivers/target/target_core_rd.h
drivers/target/target_core_transport.c
... | ... | @@ -227,8 +227,6 @@ |
227 | 227 | static int transport_set_sense_codes(struct se_cmd *cmd, u8 asc, u8 ascq); |
228 | 228 | static void transport_stop_all_task_timers(struct se_cmd *cmd); |
229 | 229 | |
230 | -int transport_emulate_control_cdb(struct se_task *task); | |
231 | - | |
232 | 230 | int init_se_global(void) |
233 | 231 | { |
234 | 232 | struct se_global *global; |
... | ... | @@ -4395,7 +4393,7 @@ |
4395 | 4393 | return -1; |
4396 | 4394 | } |
4397 | 4395 | |
4398 | -extern u32 transport_calc_sg_num( | |
4396 | +u32 transport_calc_sg_num( | |
4399 | 4397 | struct se_task *task, |
4400 | 4398 | struct se_mem *in_se_mem, |
4401 | 4399 | u32 task_offset) |
include/target/target_core_base.h
... | ... | @@ -239,7 +239,7 @@ |
239 | 239 | } ____cacheline_aligned; |
240 | 240 | |
241 | 241 | struct t10_alua_lu_gp_member { |
242 | - int lu_gp_assoc:1; | |
242 | + bool lu_gp_assoc; | |
243 | 243 | atomic_t lu_gp_mem_ref_cnt; |
244 | 244 | spinlock_t lu_gp_mem_lock; |
245 | 245 | struct t10_alua_lu_gp *lu_gp; |
... | ... | @@ -271,7 +271,7 @@ |
271 | 271 | } ____cacheline_aligned; |
272 | 272 | |
273 | 273 | struct t10_alua_tg_pt_gp_member { |
274 | - int tg_pt_gp_assoc:1; | |
274 | + bool tg_pt_gp_assoc; | |
275 | 275 | atomic_t tg_pt_gp_mem_ref_cnt; |
276 | 276 | spinlock_t tg_pt_gp_mem_lock; |
277 | 277 | struct t10_alua_tg_pt_gp *tg_pt_gp; |
... | ... | @@ -336,7 +336,7 @@ |
336 | 336 | int pr_res_type; |
337 | 337 | int pr_res_scope; |
338 | 338 | /* Used for fabric initiator WWPNs using a ISID */ |
339 | - int isid_present_at_reg:1; | |
339 | + bool isid_present_at_reg; | |
340 | 340 | u32 pr_res_mapped_lun; |
341 | 341 | u32 pr_aptpl_target_lun; |
342 | 342 | u32 pr_res_generation; |
... | ... | @@ -418,7 +418,7 @@ |
418 | 418 | unsigned long long t_task_lba; |
419 | 419 | int t_tasks_failed; |
420 | 420 | int t_tasks_fua; |
421 | - int t_tasks_bidi:1; | |
421 | + bool t_tasks_bidi; | |
422 | 422 | u32 t_task_cdbs; |
423 | 423 | u32 t_tasks_check; |
424 | 424 | u32 t_tasks_no; |
... | ... | @@ -470,7 +470,7 @@ |
470 | 470 | u8 task_flags; |
471 | 471 | int task_error_status; |
472 | 472 | int task_state_flags; |
473 | - int task_padded_sg:1; | |
473 | + bool task_padded_sg; | |
474 | 474 | unsigned long long task_lba; |
475 | 475 | u32 task_no; |
476 | 476 | u32 task_sectors; |
... | ... | @@ -583,7 +583,7 @@ |
583 | 583 | struct se_node_acl { |
584 | 584 | char initiatorname[TRANSPORT_IQN_LEN]; |
585 | 585 | /* Used to signal demo mode created ACL, disabled by default */ |
586 | - int dynamic_node_acl:1; | |
586 | + bool dynamic_node_acl; | |
587 | 587 | u32 queue_depth; |
588 | 588 | u32 acl_index; |
589 | 589 | u64 num_cmds; |
... | ... | @@ -632,7 +632,7 @@ |
632 | 632 | } ____cacheline_aligned; |
633 | 633 | |
634 | 634 | struct se_dev_entry { |
635 | - int def_pr_registered:1; | |
635 | + bool def_pr_registered; | |
636 | 636 | /* See transport_lunflags_table */ |
637 | 637 | u32 lun_flags; |
638 | 638 | u32 deve_cmds; |
include/target/target_core_fabric_ops.h
... | ... | @@ -8,7 +8,7 @@ |
8 | 8 | * for scatterlist chaining using transport_do_task_sg_link(), |
9 | 9 | * disabled by default |
10 | 10 | */ |
11 | - int task_sg_chaining:1; | |
11 | + bool task_sg_chaining; | |
12 | 12 | char *(*get_fabric_name)(void); |
13 | 13 | u8 (*get_fabric_proto_ident)(struct se_portal_group *); |
14 | 14 | char *(*tpg_get_wwn)(struct se_portal_group *); |
include/target/target_core_transport.h
... | ... | @@ -109,6 +109,8 @@ |
109 | 109 | struct se_mem; |
110 | 110 | struct se_subsystem_api; |
111 | 111 | |
112 | +extern struct kmem_cache *se_mem_cache; | |
113 | + | |
112 | 114 | extern int init_se_global(void); |
113 | 115 | extern void release_se_global(void); |
114 | 116 | extern void init_scsi_index_table(void); |
... | ... | @@ -190,6 +192,8 @@ |
190 | 192 | extern int transport_generic_do_tmr(struct se_cmd *); |
191 | 193 | /* From target_core_alua.c */ |
192 | 194 | extern int core_alua_check_nonop_delay(struct se_cmd *); |
195 | +/* From target_core_cdb.c */ | |
196 | +extern int transport_emulate_control_cdb(struct se_task *); | |
193 | 197 | |
194 | 198 | /* |
195 | 199 | * Each se_transport_task_t can have N number of possible struct se_task's |