Skip to content

Commit

Permalink
Fix off-by-one (page) errors in checks in d_mmap methods of several d…
Browse files Browse the repository at this point in the history
…rivers.

Reported by:	C Turt <ecturt@gmail.com>
Reviewed by:	alc, markj
admbug:		781
MFC after:	2 weeks
Sponsored by:	The FreeBSD Foundation
  • Loading branch information
kostikbel committed Dec 2, 2018
1 parent 311df7e commit 6dc9024
Show file tree
Hide file tree
Showing 4 changed files with 4 additions and 1 deletion.
2 changes: 1 addition & 1 deletion sys/arm/ti/ti_pruss.c
Expand Up @@ -704,7 +704,7 @@ ti_pruss_mmap(struct cdev *cdev, vm_ooffset_t offset, vm_paddr_t *paddr,
device_t dev = cdev->si_drv1;
struct ti_pruss_softc *sc = device_get_softc(dev);

if (offset > rman_get_size(sc->sc_mem_res))
if (offset >= rman_get_size(sc->sc_mem_res))
return (ENOSPC);
*paddr = rman_get_start(sc->sc_mem_res) + offset;
*memattr = VM_MEMATTR_UNCACHEABLE;
Expand Down
1 change: 1 addition & 0 deletions sys/dev/altera/avgen/altera_avgen.c
Expand Up @@ -229,6 +229,7 @@ altera_avgen_mmap(struct cdev *dev, vm_ooffset_t offset, vm_paddr_t *paddr,
return (EACCES);
}
if (trunc_page(offset) == offset &&
offset + PAGE_SIZE > offset &&
rman_get_size(sc->avg_res) >= offset + PAGE_SIZE) {
*paddr = rman_get_start(sc->avg_res) + offset;
*memattr = VM_MEMATTR_UNCACHEABLE;
Expand Down
1 change: 1 addition & 0 deletions sys/dev/terasic/mtl/terasic_mtl_reg.c
Expand Up @@ -132,6 +132,7 @@ terasic_mtl_reg_mmap(struct cdev *dev, vm_ooffset_t offset, vm_paddr_t *paddr,
sc = dev->si_drv1;
error = 0;
if (trunc_page(offset) == offset &&
offset + PAGE_SIZE > offset &&
rman_get_size(sc->mtl_reg_res) >= offset + PAGE_SIZE) {
*paddr = rman_get_start(sc->mtl_reg_res) + offset;
*memattr = VM_MEMATTR_UNCACHEABLE;
Expand Down
1 change: 1 addition & 0 deletions sys/dev/terasic/mtl/terasic_mtl_text.c
Expand Up @@ -131,6 +131,7 @@ terasic_mtl_text_mmap(struct cdev *dev, vm_ooffset_t offset,
sc = dev->si_drv1;
error = 0;
if (trunc_page(offset) == offset &&
offset + PAGE_SIZE > offset &&
rman_get_size(sc->mtl_text_res) >= offset + PAGE_SIZE) {
*paddr = rman_get_start(sc->mtl_text_res) + offset;
*memattr = VM_MEMATTR_UNCACHEABLE;
Expand Down

0 comments on commit 6dc9024

Please sign in to comment.