You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
[SCSI] lpfc 8.2.2 : Miscellaneous Bug Fixes
- Fix vport ndlp ref counting errors - Fix use after free of ndlp structure - Use the correct flag to check for LOADING setting. - Fix driver unload bugs (related to shost references) after link down or rscn - Fix up HBQ initialization - Fix port_list locking around driver unload. - Fix references to hostdata as a phba - Fix GFFID type offset to work correctly with big endian structure. - Only call pci_disable_msi if the pci_enable_msi succeeded - Fix vport_delete wait/fail if in discovery - Put a reference on the nameservers ndlp when performing CT traffic. - Remove unbalanced hba unlock. - Fix up HBQ processing - Fix lpfc debugfs discovery trace output for ELS rsp cmpl - Send ADISC when rpi is 0 - Stop FDISC retrying forever - Unable to retrieve correct config parameter for vport - Fix sli_validate_fcp_iocb, sli_sum_iocb, sli_abort_iocb to be vport-aware. - Fix index-out-of-range error in iocb. Spotted by Coverity. Signed-off-by: James Smart <James.Smart@emulex.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
committed by
James Bottomley
parent
78b2d852a8
commit
51ef4c2689
+22
-11
@@ -78,6 +78,7 @@ struct lpfc_dma_pool {
|
||||
|
||||
struct hbq_dmabuf {
|
||||
struct lpfc_dmabuf dbuf;
|
||||
uint32_t size;
|
||||
uint32_t tag;
|
||||
};
|
||||
|
||||
@@ -329,15 +330,7 @@ struct lpfc_vport {
|
||||
#define FC_LOADING 0x1 /* HBA in process of loading drvr */
|
||||
#define FC_UNLOADING 0x2 /* HBA in process of unloading drvr */
|
||||
char *vname; /* Application assigned name */
|
||||
struct fc_vport *fc_vport;
|
||||
|
||||
#ifdef CONFIG_LPFC_DEBUG_FS
|
||||
struct dentry *debug_disc_trc;
|
||||
struct dentry *debug_nodelist;
|
||||
struct dentry *vport_debugfs_root;
|
||||
struct lpfc_debugfs_trc *disc_trc;
|
||||
atomic_t disc_trc_cnt;
|
||||
#endif
|
||||
/* Vport Config Parameters */
|
||||
uint32_t cfg_scan_down;
|
||||
uint32_t cfg_lun_queue_depth;
|
||||
@@ -353,6 +346,16 @@ struct lpfc_vport {
|
||||
uint32_t cfg_max_luns;
|
||||
|
||||
uint32_t dev_loss_tmo_changed;
|
||||
|
||||
struct fc_vport *fc_vport;
|
||||
|
||||
#ifdef CONFIG_LPFC_DEBUG_FS
|
||||
struct dentry *debug_disc_trc;
|
||||
struct dentry *debug_nodelist;
|
||||
struct dentry *vport_debugfs_root;
|
||||
struct lpfc_debugfs_trc *disc_trc;
|
||||
atomic_t disc_trc_cnt;
|
||||
#endif
|
||||
};
|
||||
|
||||
struct hbq_s {
|
||||
@@ -360,11 +363,19 @@ struct hbq_s {
|
||||
uint32_t next_hbqPutIdx; /* Index to next HBQ slot to use */
|
||||
uint32_t hbqPutIdx; /* HBQ slot to use */
|
||||
uint32_t local_hbqGetIdx; /* Local copy of Get index from Port */
|
||||
void *hbq_virt; /* Virtual ptr to this hbq */
|
||||
struct list_head hbq_buffer_list; /* buffers assigned to this HBQ */
|
||||
/* Callback for HBQ buffer allocation */
|
||||
struct hbq_dmabuf *(*hbq_alloc_buffer) (struct lpfc_hba *);
|
||||
/* Callback for HBQ buffer free */
|
||||
void (*hbq_free_buffer) (struct lpfc_hba *,
|
||||
struct hbq_dmabuf *);
|
||||
};
|
||||
|
||||
#define LPFC_MAX_HBQS 16
|
||||
/* this matches the possition in the lpfc_hbq_defs array */
|
||||
#define LPFC_MAX_HBQS 4
|
||||
/* this matches the position in the lpfc_hbq_defs array */
|
||||
#define LPFC_ELS_HBQ 0
|
||||
#define LPFC_EXTRA_HBQ 1
|
||||
|
||||
struct lpfc_hba {
|
||||
struct lpfc_sli sli;
|
||||
@@ -460,7 +471,6 @@ struct lpfc_hba {
|
||||
wait_queue_head_t *work_wait;
|
||||
struct task_struct *worker_thread;
|
||||
|
||||
struct list_head hbq_buffer_list;
|
||||
uint32_t hbq_count; /* Count of configured HBQs */
|
||||
struct hbq_s hbqs[LPFC_MAX_HBQS]; /* local copy of hbq indicies */
|
||||
|
||||
@@ -529,6 +539,7 @@ struct lpfc_hba {
|
||||
mempool_t *nlp_mem_pool;
|
||||
|
||||
struct fc_host_statistics link_stats;
|
||||
uint8_t using_msi;
|
||||
|
||||
struct list_head port_list;
|
||||
struct lpfc_vport *pport; /* physical lpfc_vport pointer */
|
||||
|
||||
Reference in New Issue
Block a user