diff options
| author | Ariff Abdullah <ariff@FreeBSD.org> | 2007-07-08 14:01:11 +0000 |
|---|---|---|
| committer | Ariff Abdullah <ariff@FreeBSD.org> | 2007-07-08 14:01:11 +0000 |
| commit | 63f318eddb50cb8fd90b38071854668191b4e541 (patch) | |
| tree | 6ce608a3b1d0703e54d14e09cec7fe8099ffe6ba | |
| parent | e935cafc2ce0ac0acb9f1d110d35813ddbc117bb (diff) | |
Notes
| -rw-r--r-- | sys/dev/sound/pcm/dsp.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/sys/dev/sound/pcm/dsp.c b/sys/dev/sound/pcm/dsp.c index 48153350864b..be0140d24997 100644 --- a/sys/dev/sound/pcm/dsp.c +++ b/sys/dev/sound/pcm/dsp.c @@ -31,6 +31,10 @@ SND_DECLARE_FILE("$FreeBSD$"); +static int dsp_mmap_allow_prot_exec = 0; +SYSCTL_INT(_hw_snd, OID_AUTO, compat_linux_mmap, CTLFLAG_RW, + &dsp_mmap_allow_prot_exec, 0, "linux mmap compatibility"); + #define OLDPCM_IOCTL static d_open_t dsp_open; @@ -1080,7 +1084,15 @@ dsp_mmap(struct cdev *i_dev, vm_offset_t offset, vm_paddr_t *paddr, int nprot) { struct pcm_channel *wrch = NULL, *rdch = NULL, *c; - if (nprot & PROT_EXEC) + /* + * Reject PROT_EXEC by default. It just doesn't makes sense. + * Unfortunately, we have to give up this one due to linux_mmap + * changes. + * + * http://lists.freebsd.org/pipermail/freebsd-emulation/2007-June/003698.html + * + */ + if ((nprot & PROT_EXEC) && dsp_mmap_allow_prot_exec == 0) return -1; getchns(i_dev, &rdch, &wrch, SD_F_PRIO_RD | SD_F_PRIO_WR); |
