提交 0cf25ad1 编写于 作者: K Keith Busch 提交者: Yang Yingliang

PCI/AER: Remove error source from AER struct aer_rpc

mainline inclusion
from mainline-v4.20-rc1
commit fcd4d369
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I47H3V
CVE: NA

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

The AER struct aer_rpc was carrying a copy of the error source simply as a
temperary variable.  Remove that from the structure and use a stack
variable for the purpose.
Signed-off-by: NKeith Busch <keith.busch@intel.com>
Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Nliyouhong <liyouhong@kylinos.cn>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
Reviewed-by: NXiongfeng Wang <wangxiongfeng2@huawei.com>
Reviewed-by: NXie XiuQi <xiexiuqi@huawei.com>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
上级 ccf8a54c
...@@ -44,7 +44,6 @@ struct aer_rpc { ...@@ -44,7 +44,6 @@ struct aer_rpc {
struct pci_dev *rpd; /* Root Port device */ struct pci_dev *rpd; /* Root Port device */
struct work_struct dpc_handler; struct work_struct dpc_handler;
struct aer_err_source e_sources[AER_ERROR_SOURCES_MAX]; struct aer_err_source e_sources[AER_ERROR_SOURCES_MAX];
struct aer_err_info e_info;
unsigned short prod_idx; /* Error Producer Index */ unsigned short prod_idx; /* Error Producer Index */
unsigned short cons_idx; /* Error Consumer Index */ unsigned short cons_idx; /* Error Consumer Index */
int isr; int isr;
...@@ -1172,7 +1171,7 @@ static void aer_isr_one_error(struct aer_rpc *rpc, ...@@ -1172,7 +1171,7 @@ static void aer_isr_one_error(struct aer_rpc *rpc,
struct aer_err_source *e_src) struct aer_err_source *e_src)
{ {
struct pci_dev *pdev = rpc->rpd; struct pci_dev *pdev = rpc->rpd;
struct aer_err_info *e_info = &rpc->e_info; struct aer_err_info e_info;
pci_rootport_aer_stats_incr(pdev, e_src); pci_rootport_aer_stats_incr(pdev, e_src);
...@@ -1181,36 +1180,36 @@ static void aer_isr_one_error(struct aer_rpc *rpc, ...@@ -1181,36 +1180,36 @@ static void aer_isr_one_error(struct aer_rpc *rpc,
* uncorrectable error being logged. Report correctable error first. * uncorrectable error being logged. Report correctable error first.
*/ */
if (e_src->status & PCI_ERR_ROOT_COR_RCV) { if (e_src->status & PCI_ERR_ROOT_COR_RCV) {
e_info->id = ERR_COR_ID(e_src->id); e_info.id = ERR_COR_ID(e_src->id);
e_info->severity = AER_CORRECTABLE; e_info.severity = AER_CORRECTABLE;
if (e_src->status & PCI_ERR_ROOT_MULTI_COR_RCV) if (e_src->status & PCI_ERR_ROOT_MULTI_COR_RCV)
e_info->multi_error_valid = 1; e_info.multi_error_valid = 1;
else else
e_info->multi_error_valid = 0; e_info.multi_error_valid = 0;
aer_print_port_info(pdev, e_info); aer_print_port_info(pdev, &e_info);
if (find_source_device(pdev, e_info)) if (find_source_device(pdev, &e_info))
aer_process_err_devices(e_info); aer_process_err_devices(&e_info);
} }
if (e_src->status & PCI_ERR_ROOT_UNCOR_RCV) { if (e_src->status & PCI_ERR_ROOT_UNCOR_RCV) {
e_info->id = ERR_UNCOR_ID(e_src->id); e_info.id = ERR_UNCOR_ID(e_src->id);
if (e_src->status & PCI_ERR_ROOT_FATAL_RCV) if (e_src->status & PCI_ERR_ROOT_FATAL_RCV)
e_info->severity = AER_FATAL; e_info.severity = AER_FATAL;
else else
e_info->severity = AER_NONFATAL; e_info.severity = AER_NONFATAL;
if (e_src->status & PCI_ERR_ROOT_MULTI_UNCOR_RCV) if (e_src->status & PCI_ERR_ROOT_MULTI_UNCOR_RCV)
e_info->multi_error_valid = 1; e_info.multi_error_valid = 1;
else else
e_info->multi_error_valid = 0; e_info.multi_error_valid = 0;
aer_print_port_info(pdev, e_info); aer_print_port_info(pdev, &e_info);
if (find_source_device(pdev, e_info)) if (find_source_device(pdev, &e_info))
aer_process_err_devices(e_info); aer_process_err_devices(&e_info);
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册