提交 b0afa0fa 编写于 作者: C Corey Minyard 提交者: Yongqiang Liu

ipmi_ssif: Rename idle state and check

stable inclusion
from stable-v4.19.283
commit 13b3a05b5b03b4fce5a9ea03dc91159dea1f6ef9
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I7BZ5U
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=13b3a05b5b03b4fce5a9ea03dc91159dea1f6ef9

--------------------------------

[ Upstream commit 8230831c ]

Rename the SSIF_IDLE() to IS_SSIF_IDLE(), since that is more clear, and
rename SSIF_NORMAL to SSIF_IDLE, since that's more accurate.

Cc: stable@vger.kernel.org
Signed-off-by: NCorey Minyard <cminyard@mvista.com>
Stable-dep-of: 6d2555cd ("ipmi: fix SSIF not responding under certain cond.")
Signed-off-by: NSasha Levin <sashal@kernel.org>

conflict:
	drivers/char/ipmi/ipmi_ssif.c
Signed-off-by: NYi Yang <yiyang13@huawei.com>
Reviewed-by: NXiu Jianfeng <xiujianfeng@huawei.com>
Signed-off-by: NYongqiang Liu <liuyongqiang13@huawei.com>
上级 c68cb237
...@@ -95,7 +95,7 @@ ...@@ -95,7 +95,7 @@
#define SSIF_WATCH_TIMEOUT_JIFFIES msecs_to_jiffies(SSIF_WATCH_TIMEOUT_MSEC) #define SSIF_WATCH_TIMEOUT_JIFFIES msecs_to_jiffies(SSIF_WATCH_TIMEOUT_MSEC)
enum ssif_intf_state { enum ssif_intf_state {
SSIF_NORMAL, SSIF_IDLE,
SSIF_GETTING_FLAGS, SSIF_GETTING_FLAGS,
SSIF_GETTING_EVENTS, SSIF_GETTING_EVENTS,
SSIF_CLEARING_FLAGS, SSIF_CLEARING_FLAGS,
...@@ -103,7 +103,7 @@ enum ssif_intf_state { ...@@ -103,7 +103,7 @@ enum ssif_intf_state {
/* FIXME - add watchdog stuff. */ /* FIXME - add watchdog stuff. */
}; };
#define SSIF_IDLE(ssif) ((ssif)->ssif_state == SSIF_NORMAL \ #define IS_SSIF_IDLE(ssif) ((ssif)->ssif_state == SSIF_IDLE \
&& (ssif)->curr_msg == NULL) && (ssif)->curr_msg == NULL)
/* /*
...@@ -350,9 +350,9 @@ static void return_hosed_msg(struct ssif_info *ssif_info, ...@@ -350,9 +350,9 @@ static void return_hosed_msg(struct ssif_info *ssif_info,
/* /*
* Must be called with the message lock held. This will release the * Must be called with the message lock held. This will release the
* message lock. Note that the caller will check SSIF_IDLE and start a * message lock. Note that the caller will check IS_SSIF_IDLE and
* new operation, so there is no need to check for new messages to * start a new operation, so there is no need to check for new
* start in here. * messages to start in here.
*/ */
static void start_clear_flags(struct ssif_info *ssif_info, unsigned long *flags) static void start_clear_flags(struct ssif_info *ssif_info, unsigned long *flags)
{ {
...@@ -369,7 +369,7 @@ static void start_clear_flags(struct ssif_info *ssif_info, unsigned long *flags) ...@@ -369,7 +369,7 @@ static void start_clear_flags(struct ssif_info *ssif_info, unsigned long *flags)
if (start_send(ssif_info, msg, 3) != 0) { if (start_send(ssif_info, msg, 3) != 0) {
/* Error, just go to normal state. */ /* Error, just go to normal state. */
ssif_info->ssif_state = SSIF_NORMAL; ssif_info->ssif_state = SSIF_IDLE;
} }
} }
...@@ -384,7 +384,7 @@ static void start_flag_fetch(struct ssif_info *ssif_info, unsigned long *flags) ...@@ -384,7 +384,7 @@ static void start_flag_fetch(struct ssif_info *ssif_info, unsigned long *flags)
mb[0] = (IPMI_NETFN_APP_REQUEST << 2); mb[0] = (IPMI_NETFN_APP_REQUEST << 2);
mb[1] = IPMI_GET_MSG_FLAGS_CMD; mb[1] = IPMI_GET_MSG_FLAGS_CMD;
if (start_send(ssif_info, mb, 2) != 0) if (start_send(ssif_info, mb, 2) != 0)
ssif_info->ssif_state = SSIF_NORMAL; ssif_info->ssif_state = SSIF_IDLE;
} }
static void check_start_send(struct ssif_info *ssif_info, unsigned long *flags, static void check_start_send(struct ssif_info *ssif_info, unsigned long *flags,
...@@ -395,7 +395,7 @@ static void check_start_send(struct ssif_info *ssif_info, unsigned long *flags, ...@@ -395,7 +395,7 @@ static void check_start_send(struct ssif_info *ssif_info, unsigned long *flags,
flags = ipmi_ssif_lock_cond(ssif_info, &oflags); flags = ipmi_ssif_lock_cond(ssif_info, &oflags);
ssif_info->curr_msg = NULL; ssif_info->curr_msg = NULL;
ssif_info->ssif_state = SSIF_NORMAL; ssif_info->ssif_state = SSIF_IDLE;
ipmi_ssif_unlock_cond(ssif_info, flags); ipmi_ssif_unlock_cond(ssif_info, flags);
ipmi_free_smi_msg(msg); ipmi_free_smi_msg(msg);
} }
...@@ -409,7 +409,7 @@ static void start_event_fetch(struct ssif_info *ssif_info, unsigned long *flags) ...@@ -409,7 +409,7 @@ static void start_event_fetch(struct ssif_info *ssif_info, unsigned long *flags)
msg = ipmi_alloc_smi_msg(); msg = ipmi_alloc_smi_msg();
if (!msg) { if (!msg) {
ssif_info->ssif_state = SSIF_NORMAL; ssif_info->ssif_state = SSIF_IDLE;
ipmi_ssif_unlock_cond(ssif_info, flags); ipmi_ssif_unlock_cond(ssif_info, flags);
return; return;
} }
...@@ -432,7 +432,7 @@ static void start_recv_msg_fetch(struct ssif_info *ssif_info, ...@@ -432,7 +432,7 @@ static void start_recv_msg_fetch(struct ssif_info *ssif_info,
msg = ipmi_alloc_smi_msg(); msg = ipmi_alloc_smi_msg();
if (!msg) { if (!msg) {
ssif_info->ssif_state = SSIF_NORMAL; ssif_info->ssif_state = SSIF_IDLE;
ipmi_ssif_unlock_cond(ssif_info, flags); ipmi_ssif_unlock_cond(ssif_info, flags);
return; return;
} }
...@@ -450,9 +450,9 @@ static void start_recv_msg_fetch(struct ssif_info *ssif_info, ...@@ -450,9 +450,9 @@ static void start_recv_msg_fetch(struct ssif_info *ssif_info,
/* /*
* Must be called with the message lock held. This will release the * Must be called with the message lock held. This will release the
* message lock. Note that the caller will check SSIF_IDLE and start a * message lock. Note that the caller will check IS_SSIF_IDLE and
* new operation, so there is no need to check for new messages to * start a new operation, so there is no need to check for new
* start in here. * messages to start in here.
*/ */
static void handle_flags(struct ssif_info *ssif_info, unsigned long *flags) static void handle_flags(struct ssif_info *ssif_info, unsigned long *flags)
{ {
...@@ -468,7 +468,7 @@ static void handle_flags(struct ssif_info *ssif_info, unsigned long *flags) ...@@ -468,7 +468,7 @@ static void handle_flags(struct ssif_info *ssif_info, unsigned long *flags)
/* Events available. */ /* Events available. */
start_event_fetch(ssif_info, flags); start_event_fetch(ssif_info, flags);
else { else {
ssif_info->ssif_state = SSIF_NORMAL; ssif_info->ssif_state = SSIF_IDLE;
ipmi_ssif_unlock_cond(ssif_info, flags); ipmi_ssif_unlock_cond(ssif_info, flags);
} }
} }
...@@ -580,7 +580,7 @@ static void watch_timeout(struct timer_list *t) ...@@ -580,7 +580,7 @@ static void watch_timeout(struct timer_list *t)
if (ssif_info->need_watch) { if (ssif_info->need_watch) {
mod_timer(&ssif_info->watch_timer, mod_timer(&ssif_info->watch_timer,
jiffies + SSIF_WATCH_TIMEOUT_JIFFIES); jiffies + SSIF_WATCH_TIMEOUT_JIFFIES);
if (SSIF_IDLE(ssif_info)) { if (IS_SSIF_IDLE(ssif_info)) {
start_flag_fetch(ssif_info, flags); /* Releases lock */ start_flag_fetch(ssif_info, flags); /* Releases lock */
return; return;
} }
...@@ -777,7 +777,7 @@ static void msg_done_handler(struct ssif_info *ssif_info, int result, ...@@ -777,7 +777,7 @@ static void msg_done_handler(struct ssif_info *ssif_info, int result,
} }
switch (ssif_info->ssif_state) { switch (ssif_info->ssif_state) {
case SSIF_NORMAL: case SSIF_IDLE:
ipmi_ssif_unlock_cond(ssif_info, flags); ipmi_ssif_unlock_cond(ssif_info, flags);
if (!msg) if (!msg)
break; break;
...@@ -795,7 +795,7 @@ static void msg_done_handler(struct ssif_info *ssif_info, int result, ...@@ -795,7 +795,7 @@ static void msg_done_handler(struct ssif_info *ssif_info, int result,
* Error fetching flags, or invalid length, * Error fetching flags, or invalid length,
* just give up for now. * just give up for now.
*/ */
ssif_info->ssif_state = SSIF_NORMAL; ssif_info->ssif_state = SSIF_IDLE;
ipmi_ssif_unlock_cond(ssif_info, flags); ipmi_ssif_unlock_cond(ssif_info, flags);
pr_warn(PFX "Error getting flags: %d %d, %x\n", pr_warn(PFX "Error getting flags: %d %d, %x\n",
result, len, (len >= 3) ? data[2] : 0); result, len, (len >= 3) ? data[2] : 0);
...@@ -826,7 +826,7 @@ static void msg_done_handler(struct ssif_info *ssif_info, int result, ...@@ -826,7 +826,7 @@ static void msg_done_handler(struct ssif_info *ssif_info, int result,
pr_warn(PFX "Invalid response clearing flags: %x %x\n", pr_warn(PFX "Invalid response clearing flags: %x %x\n",
data[0], data[1]); data[0], data[1]);
} }
ssif_info->ssif_state = SSIF_NORMAL; ssif_info->ssif_state = SSIF_IDLE;
ipmi_ssif_unlock_cond(ssif_info, flags); ipmi_ssif_unlock_cond(ssif_info, flags);
break; break;
...@@ -879,7 +879,7 @@ static void msg_done_handler(struct ssif_info *ssif_info, int result, ...@@ -879,7 +879,7 @@ static void msg_done_handler(struct ssif_info *ssif_info, int result,
} }
flags = ipmi_ssif_lock_cond(ssif_info, &oflags); flags = ipmi_ssif_lock_cond(ssif_info, &oflags);
if (SSIF_IDLE(ssif_info) && !ssif_info->stopping) { if (IS_SSIF_IDLE(ssif_info) && !ssif_info->stopping) {
if (ssif_info->req_events) if (ssif_info->req_events)
start_event_fetch(ssif_info, flags); start_event_fetch(ssif_info, flags);
else if (ssif_info->req_flags) else if (ssif_info->req_flags)
...@@ -1048,7 +1048,7 @@ static void start_next_msg(struct ssif_info *ssif_info, unsigned long *flags) ...@@ -1048,7 +1048,7 @@ static void start_next_msg(struct ssif_info *ssif_info, unsigned long *flags)
unsigned long oflags; unsigned long oflags;
restart: restart:
if (!SSIF_IDLE(ssif_info)) { if (!IS_SSIF_IDLE(ssif_info)) {
ipmi_ssif_unlock_cond(ssif_info, flags); ipmi_ssif_unlock_cond(ssif_info, flags);
return; return;
} }
...@@ -1264,7 +1264,7 @@ static void shutdown_ssif(void *send_info) ...@@ -1264,7 +1264,7 @@ static void shutdown_ssif(void *send_info)
dev_set_drvdata(&ssif_info->client->dev, NULL); dev_set_drvdata(&ssif_info->client->dev, NULL);
/* make sure the driver is not looking for flags any more. */ /* make sure the driver is not looking for flags any more. */
while (ssif_info->ssif_state != SSIF_NORMAL) while (ssif_info->ssif_state != SSIF_IDLE)
schedule_timeout(1); schedule_timeout(1);
ssif_info->stopping = true; ssif_info->stopping = true;
...@@ -1646,7 +1646,7 @@ static int ssif_probe(struct i2c_client *client, const struct i2c_device_id *id) ...@@ -1646,7 +1646,7 @@ static int ssif_probe(struct i2c_client *client, const struct i2c_device_id *id)
} }
spin_lock_init(&ssif_info->lock); spin_lock_init(&ssif_info->lock);
ssif_info->ssif_state = SSIF_NORMAL; ssif_info->ssif_state = SSIF_IDLE;
timer_setup(&ssif_info->retry_timer, retry_timeout, 0); timer_setup(&ssif_info->retry_timer, retry_timeout, 0);
timer_setup(&ssif_info->watch_timer, watch_timeout, 0); timer_setup(&ssif_info->watch_timer, watch_timeout, 0);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册