#include #include #include /* struct se_cmd */ #define TCM_LOOP_VERSION "v2.1-rc2" #define TL_WWN_ADDR_LEN 256 #define TL_TPGS_PER_HBA 32 struct tcm_loop_cmd { /* State of Linux/SCSI CDB+Data descriptor */ u32 sc_cmd_state; /* Tagged command queueing */ u32 sc_cmd_tag; /* Pointer to the CDB+Data descriptor from Linux/SCSI subsystem */ struct scsi_cmnd *sc; /* The TCM I/O descriptor that is accessed via container_of() */ struct se_cmd tl_se_cmd; struct work_struct work; /* Sense buffer that will be mapped into outgoing status */ unsigned char tl_sense_buf[TRANSPORT_SENSE_BUFFER]; }; struct tcm_loop_tmr { atomic_t tmr_complete; wait_queue_head_t tl_tmr_wait; }; struct tcm_loop_nexus { /* * Pointer to TCM session for I_T Nexus */ struct se_session *se_sess; }; #define TCM_TRANSPORT_ONLINE 0 #define TCM_TRANSPORT_OFFLINE 1 struct tcm_loop_tpg { unsigned short tl_tpgt; unsigned short tl_transport_status; enum target_prot_type tl_fabric_prot_type; atomic_t tl_tpg_port_count; struct se_portal_group tl_se_tpg; struct tcm_loop_hba *tl_hba; struct tcm_loop_nexus *tl_nexus; }; struct tcm_loop_hba { u8 tl_proto_id; unsigned char tl_wwn_address[TL_WWN_ADDR_LEN]; struct se_hba_s *se_hba; struct se_lun *tl_hba_lun; struct se_port *tl_hba_lun_sep; struct device dev; struct Scsi_Host *sh; struct tcm_loop_tpg tl_hba_tpgs[TL_TPGS_PER_HBA]; struct se_wwn tl_hba_wwn; }; user
summaryrefslogtreecommitdiff
pe='hidden' name='h' value='nds-private-remove'/>
AgeCommit message (Collapse)AuthorFilesLines
context:
space:
mode:
authorWilliam Tu <u9012063@gmail.com>2017-02-04 08:37:29 -0800
committerDavid S. Miller <davem@davemloft.net>2017-02-06 22:50:04 -0500
commit63dfef75ed75364901d7caa52c6420cec3e73519 (patch)
tree8c3065d18a1b80da112ec1ee9a1074240cd100ca /tools/testing/selftests
parent29200c199cc9bde59033ab30fcc40b6c8ae630b0 (diff)
bpf: enable verifier to add 0 to packet ptr
The patch fixes the case when adding a zero value to the packet pointer. The zero value could come from src_reg equals type BPF_K or CONST_IMM. The patch fixes both, otherwise the verifer reports the following error: [...] R0=imm0,min_value=0,max_value=0 R1=pkt(id=0,off=0,r=4) R2=pkt_end R3=fp-12 R4=imm4,min_value=4,max_value=4 R5=pkt(id=0,off=4,r=4) 269: (bf) r2 = r0 // r2 becomes imm0 270: (77) r2 >>= 3 271: (bf) r4 = r1 // r4 becomes pkt ptr 272: (0f) r4 += r2 // r4 += 0 addition of negative constant to packet pointer is not allowed Signed-off-by: William Tu <u9012063@gmail.com> Signed-off-by: Mihai Budiu <mbudiu@vmware.com> Cc: Daniel Borkmann <daniel@iogearbox.net> Cc: Alexei Starovoitov <ast@kernel.org> Acked-by: Daniel Borkmann <daniel@iogearbox.net> Acked-by: Alexei Starovoitov <ast@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'tools/testing/selftests')
-rw-r--r--tools/testing/selftests/bpf/test_verifier.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/tools/testing/selftests/bpf/test_verifier.c b/tools/testing/selftests/bpf/test_verifier.c