Commit d71fb3bd authored by Bhanu Prakash Gollapudi's avatar Bhanu Prakash Gollapudi Committed by James Bottomley

[SCSI] bnx2fc: use list_entry instead of explicit cast

Use list_for_each_entry_safe() instead of explicit cast to avoid relying on
struct layout
Signed-off-by: default avatarBhanu Prakash Gollapudi <bprakash@broadcom.com>
Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
parent 5c17ae21
...@@ -2151,13 +2151,10 @@ static int bnx2fc_create(struct net_device *netdev, enum fip_state fip_mode) ...@@ -2151,13 +2151,10 @@ static int bnx2fc_create(struct net_device *netdev, enum fip_state fip_mode)
**/ **/
static struct bnx2fc_hba *bnx2fc_find_hba_for_cnic(struct cnic_dev *cnic) static struct bnx2fc_hba *bnx2fc_find_hba_for_cnic(struct cnic_dev *cnic)
{ {
struct list_head *list;
struct list_head *temp;
struct bnx2fc_hba *hba; struct bnx2fc_hba *hba;
/* Called with bnx2fc_dev_lock held */ /* Called with bnx2fc_dev_lock held */
list_for_each_safe(list, temp, &adapter_list) { list_for_each_entry(hba, &adapter_list, list) {
hba = (struct bnx2fc_hba *)list;
if (hba->cnic == cnic) if (hba->cnic == cnic)
return hba; return hba;
} }
......
...@@ -405,11 +405,10 @@ void bnx2fc_cmd_mgr_free(struct bnx2fc_cmd_mgr *cmgr) ...@@ -405,11 +405,10 @@ void bnx2fc_cmd_mgr_free(struct bnx2fc_cmd_mgr *cmgr)
goto free_cmgr; goto free_cmgr;
for (i = 0; i < num_possible_cpus() + 1; i++) { for (i = 0; i < num_possible_cpus() + 1; i++) {
struct list_head *list; struct bnx2fc_cmd *tmp, *io_req;
struct list_head *tmp;
list_for_each_safe(list, tmp, &cmgr->free_list[i]) { list_for_each_entry_safe(io_req, tmp,
struct bnx2fc_cmd *io_req = (struct bnx2fc_cmd *)list; &cmgr->free_list[i], link) {
list_del(&io_req->link); list_del(&io_req->link);
kfree(io_req); kfree(io_req);
} }
...@@ -1436,9 +1435,7 @@ static void bnx2fc_lun_reset_cmpl(struct bnx2fc_cmd *io_req) ...@@ -1436,9 +1435,7 @@ static void bnx2fc_lun_reset_cmpl(struct bnx2fc_cmd *io_req)
{ {
struct scsi_cmnd *sc_cmd = io_req->sc_cmd; struct scsi_cmnd *sc_cmd = io_req->sc_cmd;
struct bnx2fc_rport *tgt = io_req->tgt; struct bnx2fc_rport *tgt = io_req->tgt;
struct list_head *list; struct bnx2fc_cmd *cmd, *tmp;
struct list_head *tmp;
struct bnx2fc_cmd *cmd;
int tm_lun = sc_cmd->device->lun; int tm_lun = sc_cmd->device->lun;
int rc = 0; int rc = 0;
int lun; int lun;
...@@ -1449,9 +1446,8 @@ static void bnx2fc_lun_reset_cmpl(struct bnx2fc_cmd *io_req) ...@@ -1449,9 +1446,8 @@ static void bnx2fc_lun_reset_cmpl(struct bnx2fc_cmd *io_req)
* Walk thru the active_ios queue and ABORT the IO * Walk thru the active_ios queue and ABORT the IO
* that matches with the LUN that was reset * that matches with the LUN that was reset
*/ */
list_for_each_safe(list, tmp, &tgt->active_cmd_queue) { list_for_each_entry_safe(cmd, tmp, &tgt->active_cmd_queue, link) {
BNX2FC_TGT_DBG(tgt, "LUN RST cmpl: scan for pending IOs\n"); BNX2FC_TGT_DBG(tgt, "LUN RST cmpl: scan for pending IOs\n");
cmd = (struct bnx2fc_cmd *)list;
lun = cmd->sc_cmd->device->lun; lun = cmd->sc_cmd->device->lun;
if (lun == tm_lun) { if (lun == tm_lun) {
/* Initiate ABTS on this cmd */ /* Initiate ABTS on this cmd */
...@@ -1476,9 +1472,7 @@ static void bnx2fc_lun_reset_cmpl(struct bnx2fc_cmd *io_req) ...@@ -1476,9 +1472,7 @@ static void bnx2fc_lun_reset_cmpl(struct bnx2fc_cmd *io_req)
static void bnx2fc_tgt_reset_cmpl(struct bnx2fc_cmd *io_req) static void bnx2fc_tgt_reset_cmpl(struct bnx2fc_cmd *io_req)
{ {
struct bnx2fc_rport *tgt = io_req->tgt; struct bnx2fc_rport *tgt = io_req->tgt;
struct list_head *list; struct bnx2fc_cmd *cmd, *tmp;
struct list_head *tmp;
struct bnx2fc_cmd *cmd;
int rc = 0; int rc = 0;
/* called with tgt_lock held */ /* called with tgt_lock held */
...@@ -1487,9 +1481,8 @@ static void bnx2fc_tgt_reset_cmpl(struct bnx2fc_cmd *io_req) ...@@ -1487,9 +1481,8 @@ static void bnx2fc_tgt_reset_cmpl(struct bnx2fc_cmd *io_req)
* Walk thru the active_ios queue and ABORT the IO * Walk thru the active_ios queue and ABORT the IO
* that matches with the LUN that was reset * that matches with the LUN that was reset
*/ */
list_for_each_safe(list, tmp, &tgt->active_cmd_queue) { list_for_each_entry_safe(cmd, tmp, &tgt->active_cmd_queue, link) {
BNX2FC_TGT_DBG(tgt, "TGT RST cmpl: scan for pending IOs\n"); BNX2FC_TGT_DBG(tgt, "TGT RST cmpl: scan for pending IOs\n");
cmd = (struct bnx2fc_cmd *)list;
/* Initiate ABTS */ /* Initiate ABTS */
if (!test_and_set_bit(BNX2FC_FLAG_ISSUE_ABTS, if (!test_and_set_bit(BNX2FC_FLAG_ISSUE_ABTS,
&cmd->req_flags)) { &cmd->req_flags)) {
......
...@@ -150,8 +150,7 @@ static void bnx2fc_offload_session(struct fcoe_port *port, ...@@ -150,8 +150,7 @@ static void bnx2fc_offload_session(struct fcoe_port *port,
void bnx2fc_flush_active_ios(struct bnx2fc_rport *tgt) void bnx2fc_flush_active_ios(struct bnx2fc_rport *tgt)
{ {
struct bnx2fc_cmd *io_req; struct bnx2fc_cmd *io_req;
struct list_head *list; struct bnx2fc_cmd *tmp;
struct list_head *tmp;
int rc; int rc;
int i = 0; int i = 0;
BNX2FC_TGT_DBG(tgt, "Entered flush_active_ios - %d\n", BNX2FC_TGT_DBG(tgt, "Entered flush_active_ios - %d\n",
...@@ -160,9 +159,8 @@ void bnx2fc_flush_active_ios(struct bnx2fc_rport *tgt) ...@@ -160,9 +159,8 @@ void bnx2fc_flush_active_ios(struct bnx2fc_rport *tgt)
spin_lock_bh(&tgt->tgt_lock); spin_lock_bh(&tgt->tgt_lock);
tgt->flush_in_prog = 1; tgt->flush_in_prog = 1;
list_for_each_safe(list, tmp, &tgt->active_cmd_queue) { list_for_each_entry_safe(io_req, tmp, &tgt->active_cmd_queue, link) {
i++; i++;
io_req = (struct bnx2fc_cmd *)list;
list_del_init(&io_req->link); list_del_init(&io_req->link);
io_req->on_active_queue = 0; io_req->on_active_queue = 0;
BNX2FC_IO_DBG(io_req, "cmd_queue cleanup\n"); BNX2FC_IO_DBG(io_req, "cmd_queue cleanup\n");
...@@ -191,9 +189,8 @@ void bnx2fc_flush_active_ios(struct bnx2fc_rport *tgt) ...@@ -191,9 +189,8 @@ void bnx2fc_flush_active_ios(struct bnx2fc_rport *tgt)
} }
} }
list_for_each_safe(list, tmp, &tgt->active_tm_queue) { list_for_each_entry_safe(io_req, tmp, &tgt->active_tm_queue, link) {
i++; i++;
io_req = (struct bnx2fc_cmd *)list;
list_del_init(&io_req->link); list_del_init(&io_req->link);
io_req->on_tmf_queue = 0; io_req->on_tmf_queue = 0;
BNX2FC_IO_DBG(io_req, "tm_queue cleanup\n"); BNX2FC_IO_DBG(io_req, "tm_queue cleanup\n");
...@@ -201,9 +198,8 @@ void bnx2fc_flush_active_ios(struct bnx2fc_rport *tgt) ...@@ -201,9 +198,8 @@ void bnx2fc_flush_active_ios(struct bnx2fc_rport *tgt)
complete(&io_req->tm_done); complete(&io_req->tm_done);
} }
list_for_each_safe(list, tmp, &tgt->els_queue) { list_for_each_entry_safe(io_req, tmp, &tgt->els_queue, link) {
i++; i++;
io_req = (struct bnx2fc_cmd *)list;
list_del_init(&io_req->link); list_del_init(&io_req->link);
io_req->on_active_queue = 0; io_req->on_active_queue = 0;
...@@ -227,9 +223,8 @@ void bnx2fc_flush_active_ios(struct bnx2fc_rport *tgt) ...@@ -227,9 +223,8 @@ void bnx2fc_flush_active_ios(struct bnx2fc_rport *tgt)
} }
} }
list_for_each_safe(list, tmp, &tgt->io_retire_queue) { list_for_each_entry_safe(io_req, tmp, &tgt->io_retire_queue, link) {
i++; i++;
io_req = (struct bnx2fc_cmd *)list;
list_del_init(&io_req->link); list_del_init(&io_req->link);
BNX2FC_IO_DBG(io_req, "retire_queue flush\n"); BNX2FC_IO_DBG(io_req, "retire_queue flush\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment