summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorXiang Wang <wxjstz@126.com>2019-03-06 10:29:34 +0300
committerAtish Patra <atishp04@gmail.com>2019-03-06 22:10:35 +0300
commit9eb8f0f90d5c873576d18d405bbd932ad9688741 (patch)
treeb1e5b974fe6d35fef9b141c955ba8ddad43cdf87 /include
parent27fae182dc54e08314034a03eeb583b94c64f4c8 (diff)
downloadopensbi-9eb8f0f90d5c873576d18d405bbd932ad9688741.tar.xz
platform: Make the `platform` read-only
platform should be a read-only variable, if it is placed in the data segment, it may be exploited. Signed-off-by: Xiang Wang <wxjstz@126.com>
Diffstat (limited to 'include')
-rw-r--r--include/sbi/sbi_platform.h52
1 files changed, 27 insertions, 25 deletions
diff --git a/include/sbi/sbi_platform.h b/include/sbi/sbi_platform.h
index fe04c2f..39644d1 100644
--- a/include/sbi/sbi_platform.h
+++ b/include/sbi/sbi_platform.h
@@ -110,10 +110,10 @@ struct sbi_platform {
/** Get pointer to sbi_platform for sbi_scratch pointer */
#define sbi_platform_ptr(__s) \
- ((struct sbi_platform *)((__s)->platform_addr))
+ ((const struct sbi_platform *)((__s)->platform_addr))
/** Get pointer to sbi_platform for current HART */
#define sbi_platform_thishart_ptr() \
- ((struct sbi_platform *)(sbi_scratch_thishart_ptr()->platform_addr))
+ ((const struct sbi_platform *)(sbi_scratch_thishart_ptr()->platform_addr))
/** Check whether the platform supports timer value */
#define sbi_platform_has_timer_value(__p) \
((__p)->features & SBI_PLATFORM_HAS_TIMER_VALUE)
@@ -140,7 +140,7 @@ struct sbi_platform {
*
* @return pointer to platform name on success and NULL on failure
*/
-static inline const char *sbi_platform_name(struct sbi_platform *plat)
+static inline const char *sbi_platform_name(const struct sbi_platform *plat)
{
if (plat)
return plat->name;
@@ -155,7 +155,7 @@ static inline const char *sbi_platform_name(struct sbi_platform *plat)
*
* @return TRUE if HART is disabled and FALSE otherwise
*/
-static inline bool sbi_platform_hart_disabled(struct sbi_platform *plat,
+static inline bool sbi_platform_hart_disabled(const struct sbi_platform *plat,
u32 hartid)
{
if (plat && (plat->disabled_hart_mask & (1 << hartid)))
@@ -170,7 +170,7 @@ static inline bool sbi_platform_hart_disabled(struct sbi_platform *plat,
*
* @return total number of HARTs
*/
-static inline u32 sbi_platform_hart_count(struct sbi_platform *plat)
+static inline u32 sbi_platform_hart_count(const struct sbi_platform *plat)
{
if (plat)
return plat->hart_count;
@@ -184,7 +184,7 @@ static inline u32 sbi_platform_hart_count(struct sbi_platform *plat)
*
* @return stack size in bytes
*/
-static inline u32 sbi_platform_hart_stack_size(struct sbi_platform *plat)
+static inline u32 sbi_platform_hart_stack_size(const struct sbi_platform *plat)
{
if (plat)
return plat->hart_stack_size;
@@ -199,7 +199,7 @@ static inline u32 sbi_platform_hart_stack_size(struct sbi_platform *plat)
*
* @return 0 on success and negative error code on failure
*/
-static inline int sbi_platform_early_init(struct sbi_platform *plat,
+static inline int sbi_platform_early_init(const struct sbi_platform *plat,
bool cold_boot)
{
if (plat && plat->early_init)
@@ -215,7 +215,7 @@ static inline int sbi_platform_early_init(struct sbi_platform *plat,
*
* @return 0 on success and negative error code on failure
*/
-static inline int sbi_platform_final_init(struct sbi_platform *plat,
+static inline int sbi_platform_final_init(const struct sbi_platform *plat,
bool cold_boot)
{
if (plat && plat->final_init)
@@ -231,7 +231,7 @@ static inline int sbi_platform_final_init(struct sbi_platform *plat,
*
* @return number of PMP regions
*/
-static inline u32 sbi_platform_pmp_region_count(struct sbi_platform *plat,
+static inline u32 sbi_platform_pmp_region_count(const struct sbi_platform *plat,
u32 hartid)
{
if (plat && plat->pmp_region_count)
@@ -252,7 +252,7 @@ static inline u32 sbi_platform_pmp_region_count(struct sbi_platform *plat,
*
* @return 0 on success and negative error code on failure
*/
-static inline int sbi_platform_pmp_region_info(struct sbi_platform *plat,
+static inline int sbi_platform_pmp_region_info(const struct sbi_platform *plat,
u32 hartid, u32 index,
ulong *prot, ulong *addr,
ulong *log2size)
@@ -269,7 +269,7 @@ static inline int sbi_platform_pmp_region_info(struct sbi_platform *plat,
* @param plat pointer to struct sbi_platform
* @param ch character to write
*/
-static inline void sbi_platform_console_putc(struct sbi_platform *plat,
+static inline void sbi_platform_console_putc(const struct sbi_platform *plat,
char ch)
{
if (plat && plat->console_putc)
@@ -283,7 +283,7 @@ static inline void sbi_platform_console_putc(struct sbi_platform *plat,
*
* @return character read from console input
*/
-static inline int sbi_platform_console_getc(struct sbi_platform *plat)
+static inline int sbi_platform_console_getc(const struct sbi_platform *plat)
{
if (plat && plat->console_getc)
return plat->console_getc();
@@ -297,7 +297,7 @@ static inline int sbi_platform_console_getc(struct sbi_platform *plat)
*
* @return 0 on success and negative error code on failure
*/
-static inline int sbi_platform_console_init(struct sbi_platform *plat)
+static inline int sbi_platform_console_init(const struct sbi_platform *plat)
{
if (plat && plat->console_init)
return plat->console_init();
@@ -312,7 +312,7 @@ static inline int sbi_platform_console_init(struct sbi_platform *plat)
*
* @return 0 on success and negative error code on failure
*/
-static inline int sbi_platform_irqchip_init(struct sbi_platform *plat,
+static inline int sbi_platform_irqchip_init(const struct sbi_platform *plat,
bool cold_boot)
{
if (plat && plat->irqchip_init)
@@ -326,7 +326,7 @@ static inline int sbi_platform_irqchip_init(struct sbi_platform *plat,
* @param plat pointer to struct sbi_platform
* @param target_hart HART ID of IPI target
*/
-static inline void sbi_platform_ipi_send(struct sbi_platform *plat,
+static inline void sbi_platform_ipi_send(const struct sbi_platform *plat,
u32 target_hart)
{
if (plat && plat->ipi_send)
@@ -339,7 +339,7 @@ static inline void sbi_platform_ipi_send(struct sbi_platform *plat,
* @param plat pointer to struct sbi_platform
* @param target_hart HART ID of IPI target
*/
-static inline void sbi_platform_ipi_sync(struct sbi_platform *plat,
+static inline void sbi_platform_ipi_sync(const struct sbi_platform *plat,
u32 target_hart)
{
if (plat && plat->ipi_sync)
@@ -352,7 +352,7 @@ static inline void sbi_platform_ipi_sync(struct sbi_platform *plat,
* @param plat pointer to struct sbi_platform
* @param target_hart HART ID of IPI target
*/
-static inline void sbi_platform_ipi_clear(struct sbi_platform *plat,
+static inline void sbi_platform_ipi_clear(const struct sbi_platform *plat,
u32 target_hart)
{
if (plat && plat->ipi_clear)
@@ -367,7 +367,7 @@ static inline void sbi_platform_ipi_clear(struct sbi_platform *plat,
*
* @return 0 on success and negative error code on failure
*/
-static inline int sbi_platform_ipi_init(struct sbi_platform *plat,
+static inline int sbi_platform_ipi_init(const struct sbi_platform *plat,
bool cold_boot)
{
if (plat && plat->ipi_init)
@@ -382,7 +382,7 @@ static inline int sbi_platform_ipi_init(struct sbi_platform *plat,
*
* @return 64bit timer value
*/
-static inline u64 sbi_platform_timer_value(struct sbi_platform *plat)
+static inline u64 sbi_platform_timer_value(const struct sbi_platform *plat)
{
if (plat && plat->timer_value)
return plat->timer_value();
@@ -395,8 +395,9 @@ static inline u64 sbi_platform_timer_value(struct sbi_platform *plat)
* @param plat pointer to struct struct sbi_platform
* @param next_event timer value when timer event will happen
*/
-static inline void sbi_platform_timer_event_start(struct sbi_platform *plat,
- u64 next_event)
+static inline void sbi_platform_timer_event_start(
+ const struct sbi_platform *plat,
+ u64 next_event)
{
if (plat && plat->timer_event_start)
plat->timer_event_start(next_event);
@@ -407,7 +408,8 @@ static inline void sbi_platform_timer_event_start(struct sbi_platform *plat,
*
* @param plat pointer to struct sbi_platform
*/
-static inline void sbi_platform_timer_event_stop(struct sbi_platform *plat)
+static inline void sbi_platform_timer_event_stop(
+ const struct sbi_platform *plat)
{
if (plat && plat->timer_event_stop)
plat->timer_event_stop();
@@ -421,7 +423,7 @@ static inline void sbi_platform_timer_event_stop(struct sbi_platform *plat)
*
* @return 0 on success and negative error code on failure
*/
-static inline int sbi_platform_timer_init(struct sbi_platform *plat,
+static inline int sbi_platform_timer_init(const struct sbi_platform *plat,
bool cold_boot)
{
if (plat && plat->timer_init)
@@ -437,7 +439,7 @@ static inline int sbi_platform_timer_init(struct sbi_platform *plat,
*
* @return 0 on success and negative error code on failure
*/
-static inline int sbi_platform_system_reboot(struct sbi_platform *plat,
+static inline int sbi_platform_system_reboot(const struct sbi_platform *plat,
u32 type)
{
if (plat && plat->system_reboot)
@@ -453,7 +455,7 @@ static inline int sbi_platform_system_reboot(struct sbi_platform *plat,
*
* @return 0 on success and negative error code on failure
*/
-static inline int sbi_platform_system_shutdown(struct sbi_platform *plat,
+static inline int sbi_platform_system_shutdown(const struct sbi_platform *plat,
u32 type)
{
if (plat && plat->system_shutdown)