mirror of
https://git.FreeBSD.org/src.git
synced 2024-11-24 07:40:52 +00:00
Use uintptr_t instead of unsigned long for pointers.
The sense_ptr thing is quite broken. As near as I can tell, the driver tries to copyout to a physical address rather than whatever user address the sense buffer should be copied to. It is not immediately obvious what user address the sense buffer should be copied to. Reviewed by: imp Obtained from: CheriBSD Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D27578
This commit is contained in:
parent
ce8395ecfd
commit
f83d3280f6
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=368686
@ -136,7 +136,7 @@ mrsas_passthru(struct mrsas_softc *sc, void *arg, u_long ioctlCmd)
|
||||
* iocpacket itself.
|
||||
*/
|
||||
kern_sge32 = (struct mrsas_sge32 *)
|
||||
((unsigned long)cmd->frame + user_ioc->sgl_off);
|
||||
((uintptr_t)cmd->frame + user_ioc->sgl_off);
|
||||
|
||||
memset(ioctl_data_tag, 0, (sizeof(bus_dma_tag_t) * MAX_IOCTL_SGE));
|
||||
memset(ioctl_data_dmamap, 0, (sizeof(bus_dmamap_t) * MAX_IOCTL_SGE));
|
||||
@ -243,7 +243,7 @@ mrsas_passthru(struct mrsas_softc *sc, void *arg, u_long ioctlCmd)
|
||||
goto out;
|
||||
}
|
||||
sense_ptr =
|
||||
(unsigned long *)((unsigned long)cmd->frame + user_ioc->sense_off);
|
||||
(unsigned long *)((uintptr_t)cmd->frame + user_ioc->sense_off);
|
||||
*sense_ptr = ioctl_sense_phys_addr;
|
||||
}
|
||||
/*
|
||||
@ -290,9 +290,9 @@ mrsas_passthru(struct mrsas_softc *sc, void *arg, u_long ioctlCmd)
|
||||
* sense_buff points to the location that has the user sense
|
||||
* buffer address
|
||||
*/
|
||||
sense_ptr = (unsigned long *)((unsigned long)user_ioc->frame.raw +
|
||||
sense_ptr = (unsigned long *)((uintptr_t)user_ioc->frame.raw +
|
||||
user_ioc->sense_off);
|
||||
ret = copyout(ioctl_sense_mem, (unsigned long *)*sense_ptr,
|
||||
ret = copyout(ioctl_sense_mem, (unsigned long *)(uintptr_t)*sense_ptr,
|
||||
user_ioc->sense_len);
|
||||
if (ret) {
|
||||
device_printf(sc->mrsas_dev, "IOCTL sense copyout failed!\n");
|
||||
|
Loading…
Reference in New Issue
Block a user