static bool
setup_variables(void)
{
  device_id_t device_id = detect_device();
  int i;

  for (i = 0; i < n_supported_devices; i++) {
    if (supported_devices[i].device_id == device_id) {
      ccsecurity_ops = (void *)supported_devices[i].ccsecurity_ops_address;
      search_binary_handler = (void *)supported_devices[i].search_binary_handler_address;
      __ccs_search_binary_handler = (void **)supported_devices[i].__ccs_search_binary_handler_address;
      break;
    }
  }

  if (!ccsecurity_ops) {
    ccsecurity_ops = lookup_symbol_name("ccsecurity_ops");
  }

  if (!search_binary_handler) {
    search_binary_handler = lookup_symbol_name("search_binary_handler");
  }

  return ccsecurity_ops && search_binary_handler;
}
static void print_name_offset(struct seq_file *m, void *sym)
{
	char symname[KSYM_NAME_LEN];

	if (lookup_symbol_name((unsigned long)sym, symname) < 0)
		SEQ_printf(m, "<%pK>", sym);
	else
		SEQ_printf(m, "%s", symname);
}
static void dump_hrtimer_callinfo(struct hrtimer *timer)
{

  char symname[KSYM_NAME_LEN];
  if (lookup_symbol_name((unsigned long)(timer->function), symname) < 0) {
  pr_err("timer info1: state/%lx, func/%pK\n",
  timer->state, timer->function);
  } else {
  pr_err("timer info2: state/%lx, func/%s\n",
  timer->state, symname);
  }
 
  #ifdef CONFIG_TIMER_STATS
  if (lookup_symbol_name((unsigned long)(timer->start_site),
  symname) < 0) {
  pr_err("timer stats1: pid/%d(%s), site/%pK\n",
  timer->start_pid, timer->start_comm, timer->start_site);
  } else {
  pr_err("timer stats2: pid/%d(%s), site/%s\n",
  timer->start_pid, timer->start_comm, symname);
  }
  #endif
}
Example #4
0
static int syscon_poweroff_probe(struct platform_device *pdev)
{
	char symname[KSYM_NAME_LEN];
	int mask_err, value_err;

	map = syscon_regmap_lookup_by_phandle(pdev->dev.of_node, "regmap");
	if (IS_ERR(map)) {
		dev_err(&pdev->dev, "unable to get syscon");
		return PTR_ERR(map);
	}

	if (of_property_read_u32(pdev->dev.of_node, "offset", &offset)) {
		dev_err(&pdev->dev, "unable to read 'offset'");
		return -EINVAL;
	}

	value_err = of_property_read_u32(pdev->dev.of_node, "value", &value);
	mask_err = of_property_read_u32(pdev->dev.of_node, "mask", &mask);
	if (value_err && mask_err) {
		dev_err(&pdev->dev, "unable to read 'value' and 'mask'");
		return -EINVAL;
	}

	if (value_err) {
		/* support old binding */
		value = mask;
		mask = 0xFFFFFFFF;
	} else if (mask_err) {
		/* support value without mask*/
		mask = 0xFFFFFFFF;
	}

	if (pm_power_off) {
		lookup_symbol_name((ulong)pm_power_off, symname);
		dev_err(&pdev->dev,
		"pm_power_off already claimed %p %s",
		pm_power_off, symname);
		return -EBUSY;
	}

	pm_power_off = syscon_poweroff;

	return 0;
}