split ->file_mmap() into ->mmap_addr()/->mmap_file()
... i.e. file-dependent and address-dependent checks. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
@@ -1171,7 +1171,7 @@ static int smack_file_fcntl(struct file *file, unsigned int cmd,
|
||||
}
|
||||
|
||||
/**
|
||||
* smack_file_mmap :
|
||||
* smack_mmap_file :
|
||||
* Check permissions for a mmap operation. The @file may be NULL, e.g.
|
||||
* if mapping anonymous memory.
|
||||
* @file contains the file structure for file to map (may be NULL).
|
||||
@@ -1180,10 +1180,9 @@ static int smack_file_fcntl(struct file *file, unsigned int cmd,
|
||||
* @flags contains the operational flags.
|
||||
* Return 0 if permission is granted.
|
||||
*/
|
||||
static int smack_file_mmap(struct file *file,
|
||||
static int smack_mmap_file(struct file *file,
|
||||
unsigned long reqprot, unsigned long prot,
|
||||
unsigned long flags, unsigned long addr,
|
||||
unsigned long addr_only)
|
||||
unsigned long flags)
|
||||
{
|
||||
struct smack_known *skp;
|
||||
struct smack_rule *srp;
|
||||
@@ -1198,11 +1197,6 @@ static int smack_file_mmap(struct file *file,
|
||||
int tmay;
|
||||
int rc;
|
||||
|
||||
/* do DAC check on address space usage */
|
||||
rc = cap_mmap_addr(addr);
|
||||
if (rc || addr_only)
|
||||
return rc;
|
||||
|
||||
if (file == NULL || file->f_dentry == NULL)
|
||||
return 0;
|
||||
|
||||
@@ -3482,7 +3476,8 @@ struct security_operations smack_ops = {
|
||||
.file_ioctl = smack_file_ioctl,
|
||||
.file_lock = smack_file_lock,
|
||||
.file_fcntl = smack_file_fcntl,
|
||||
.file_mmap = smack_file_mmap,
|
||||
.mmap_file = smack_mmap_file,
|
||||
.mmap_addr = cap_mmap_addr,
|
||||
.file_set_fowner = smack_file_set_fowner,
|
||||
.file_send_sigiotask = smack_file_send_sigiotask,
|
||||
.file_receive = smack_file_receive,
|
||||
|
Reference in New Issue
Block a user