Ignore:
Timestamp:
2019-06-17T15:12:44Z (6 years ago)
Author:
Jiří Zárevúcky <zarevucky.jiri@…>
Children:
64b7854
Parents:
ef705e14
git-author:
Jiří Zárevúcky <zarevucky.jiri@…> (2019-06-16 17:59:34)
git-committer:
Jiří Zárevúcky <zarevucky.jiri@…> (2019-06-17 15:12:44)
Message:

Change type of uspace pointers in kernel from pointer type to numeric type

From kernel's perspective, userspace addresses are not valid pointers,
and can only be used in calls to copy_to/from_uspace().
Therefore, we change the type of those arguments and variables to
uspace_addr_t which is an alias for sysarg_t.

This allows the compiler to catch accidental direct accesses to
userspace addresses.

Additionally, to avoid losing the type information in code,
a macro uspace_ptr(type) is used that translates to uspace_addr_t.
I makes no functional difference, but allows keeping the type information
in code in case we implement some sort of static checking for it in the future.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/include/sysinfo/sysinfo.h

    ref705e14 re39d7b8  
    162162extern void sysinfo_dump(sysinfo_item_t *);
    163163
    164 extern sys_errno_t sys_sysinfo_get_keys_size(void *, size_t, void *);
    165 extern sys_errno_t sys_sysinfo_get_keys(void *, size_t, void *, size_t, size_t *);
    166 extern sysarg_t sys_sysinfo_get_val_type(void *, size_t);
    167 extern sys_errno_t sys_sysinfo_get_value(void *, size_t, void *);
    168 extern sys_errno_t sys_sysinfo_get_data_size(void *, size_t, void *);
    169 extern sys_errno_t sys_sysinfo_get_data(void *, size_t, void *, size_t, size_t *);
     164extern sys_errno_t sys_sysinfo_get_keys_size(uspace_ptr(void), size_t, uspace_ptr(void));
     165extern sys_errno_t sys_sysinfo_get_keys(uspace_ptr(void), size_t, uspace_ptr(void), size_t, uspace_ptr(size_t));
     166extern sysarg_t sys_sysinfo_get_val_type(uspace_ptr(void), size_t);
     167extern sys_errno_t sys_sysinfo_get_value(uspace_ptr(void), size_t, uspace_ptr(void));
     168extern sys_errno_t sys_sysinfo_get_data_size(uspace_ptr(void), size_t, uspace_ptr(void));
     169extern sys_errno_t sys_sysinfo_get_data(uspace_ptr(void), size_t, uspace_ptr(void), size_t, uspace_ptr(size_t));
    170170
    171171#endif
Note: See TracChangeset for help on using the changeset viewer.