Skip to content

Commit

Permalink
[SCSI] ipr: fix array error logging
Browse files Browse the repository at this point in the history
The structure definitions for reporting array errors did not have the correct
size for the Array WWID field.  This patch fixes those definitions.  It also
fixes part of the output formatting that did not have newlines and fixes size
calculations.

Signed-off-by: Wayne Boyer <wayneb@linux.vnet.ibm.com>
Acked-by: Brian King <brking@linux.vnet.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
  • Loading branch information
Wayne Boyer authored and James Bottomley committed Oct 7, 2010
1 parent 4ebcfb9 commit 7262026
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 7 deletions.
10 changes: 5 additions & 5 deletions drivers/scsi/ipr.c
Original file line number Diff line number Diff line change
Expand Up @@ -1671,7 +1671,7 @@ static void ipr_log_enhanced_array_error(struct ipr_ioa_cfg *ioa_cfg,

array_entry = error->array_member;
num_entries = min_t(u32, be32_to_cpu(error->num_entries),
sizeof(error->array_member));
ARRAY_SIZE(error->array_member));

for (i = 0; i < num_entries; i++, array_entry++) {
if (!memcmp(array_entry->vpd.vpd.sn, zero_sn, IPR_SERIAL_NUM_LEN))
Expand Down Expand Up @@ -2152,8 +2152,8 @@ static void ipr_log_sis64_array_error(struct ipr_ioa_cfg *ioa_cfg,
ipr_err_separator;

array_entry = error->array_member;
num_entries = min_t(u32, be32_to_cpu(error->num_entries),
sizeof(error->array_member));
num_entries = min_t(u32, error->num_entries,
ARRAY_SIZE(error->array_member));

for (i = 0; i < num_entries; i++, array_entry++) {

Expand All @@ -2167,10 +2167,10 @@ static void ipr_log_sis64_array_error(struct ipr_ioa_cfg *ioa_cfg,

ipr_err("Array Member %d:\n", i);
ipr_log_ext_vpd(&array_entry->vpd);
ipr_err("Current Location: %s",
ipr_err("Current Location: %s\n",
ipr_format_res_path(array_entry->res_path, buffer,
sizeof(buffer)));
ipr_err("Expected Location: %s",
ipr_err("Expected Location: %s\n",
ipr_format_res_path(array_entry->expected_res_path,
buffer, sizeof(buffer)));

Expand Down
9 changes: 7 additions & 2 deletions drivers/scsi/ipr.h
Original file line number Diff line number Diff line change
Expand Up @@ -319,6 +319,11 @@ struct ipr_ext_vpd {
__be32 wwid[2];
}__attribute__((packed));

struct ipr_ext_vpd64 {
struct ipr_vpd vpd;
__be32 wwid[4];
}__attribute__((packed));

struct ipr_std_inq_data {
u8 peri_qual_dev_type;
#define IPR_STD_INQ_PERI_QUAL(peri) ((peri) >> 5)
Expand Down Expand Up @@ -395,7 +400,7 @@ struct ipr_config_table_entry64 {
__be64 res_path;
struct ipr_std_inq_data std_inq_data;
u8 reserved2[4];
__be64 reserved3[2]; // description text
__be64 reserved3[2];
u8 reserved4[8];
}__attribute__ ((packed, aligned (8)));

Expand Down Expand Up @@ -914,7 +919,7 @@ struct ipr_hostrcb_type_24_error {
u8 array_id;
u8 last_res_path[8];
u8 protection_level[8];
struct ipr_ext_vpd array_vpd;
struct ipr_ext_vpd64 array_vpd;
u8 description[16];
u8 reserved2[3];
u8 num_entries;
Expand Down

0 comments on commit 7262026

Please sign in to comment.