diff --git a/drivers/staging/hievent/hievent_driver.c b/drivers/staging/hievent/hievent_driver.c index b1a952c5a082292dcb3747420610e31dc88f8d84..be49c15a863203facc1db7f510a9e862c4e477ab 100644 --- a/drivers/staging/hievent/hievent_driver.c +++ b/drivers/staging/hievent/hievent_driver.c @@ -177,6 +177,13 @@ static ssize_t hievent_read(struct file *file, char __user *user_buf, retval = header.len + sizeof(header); out: + if (retval == -ENOMEM) { + // clean ring buffer + hievent_dev.write_offset = 0; + hievent_dev.head_offset = 0; + hievent_dev.size = 0; + hievent_dev.count = 0; + } (void)mutex_unlock(&hievent_dev.mtx); return retval; diff --git a/drivers/staging/hilog/hilog.c b/drivers/staging/hilog/hilog.c index bdc8f7416987f0d45140f5318068dda28451f9bc..16843bd63a4e9f08bb792f010f43bbafcd1eb3bd 100644 --- a/drivers/staging/hilog/hilog.c +++ b/drivers/staging/hilog/hilog.c @@ -186,6 +186,13 @@ static ssize_t hilog_read(struct file *file, hilog_buffer_dec(header.len); retval = header.len + sizeof(header); out: + if (retval == -ENOMEM) { + // clean ring buffer + hilog_dev.wr_off = 0; + hilog_dev.hdr_off = 0; + hilog_dev.size = 0; + hilog_dev.count = 0; + } (void)mutex_unlock(&hilog_dev.mtx); return retval;