1) in the calling of erst_read, the parameter of buffer size
maybe overflows and cause crash
2) the return value of erst_read should be checked more strictly
Signed-off-by: Chen Gong <gong.chen@linux.intel.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
        }
 
        len = erst_read(record_id, &rcd->hdr, sizeof(*rcd) +
-                         erst_erange.size);
+                       erst_info.bufsize);
+       /* The record may be cleared by others, try read next record */
+       if (len == -ENOENT)
+               goto skip;
+       else if (len < 0) {
+               rc = -1;
+               goto out;
+       }
        if (uuid_le_cmp(rcd->hdr.creator_id, CPER_CREATOR_PSTORE) != 0)
                goto skip;