pstore: Replace arguments for erase() API
This removes the argument list for the erase() callback and replaces it with a pointer to the backend record details to be removed. Signed-off-by: Kees Cook <keescook@chromium.org>
此提交包含在:
@@ -210,14 +210,12 @@ static int pstore_unlink(struct inode *dir, struct dentry *dentry)
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
if (record->psi->erase) {
|
||||
mutex_lock(&record->psi->read_mutex);
|
||||
record->psi->erase(record->type, record->id, record->count,
|
||||
d_inode(dentry)->i_ctime, record->psi);
|
||||
mutex_unlock(&record->psi->read_mutex);
|
||||
} else {
|
||||
if (!record->psi->erase)
|
||||
return -EPERM;
|
||||
}
|
||||
|
||||
mutex_lock(&record->psi->read_mutex);
|
||||
record->psi->erase(record);
|
||||
mutex_unlock(&record->psi->read_mutex);
|
||||
|
||||
return simple_unlink(dir, dentry);
|
||||
}
|
||||
|
@@ -469,25 +469,24 @@ static int notrace ramoops_pstore_write_buf_user(enum pstore_type_id type,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static int ramoops_pstore_erase(enum pstore_type_id type, u64 id, int count,
|
||||
struct timespec time, struct pstore_info *psi)
|
||||
static int ramoops_pstore_erase(struct pstore_record *record)
|
||||
{
|
||||
struct ramoops_context *cxt = psi->data;
|
||||
struct ramoops_context *cxt = record->psi->data;
|
||||
struct persistent_ram_zone *prz;
|
||||
|
||||
switch (type) {
|
||||
switch (record->type) {
|
||||
case PSTORE_TYPE_DMESG:
|
||||
if (id >= cxt->max_dump_cnt)
|
||||
if (record->id >= cxt->max_dump_cnt)
|
||||
return -EINVAL;
|
||||
prz = cxt->dprzs[id];
|
||||
prz = cxt->dprzs[record->id];
|
||||
break;
|
||||
case PSTORE_TYPE_CONSOLE:
|
||||
prz = cxt->cprz;
|
||||
break;
|
||||
case PSTORE_TYPE_FTRACE:
|
||||
if (id >= cxt->max_ftrace_cnt)
|
||||
if (record->id >= cxt->max_ftrace_cnt)
|
||||
return -EINVAL;
|
||||
prz = cxt->fprzs[id];
|
||||
prz = cxt->fprzs[record->id];
|
||||
break;
|
||||
case PSTORE_TYPE_PMSG:
|
||||
prz = cxt->mprz;
|
||||
|
新增問題並參考
封鎖使用者