Esempio n. 1
0
static long tzic_ioctl(struct file *file, unsigned cmd, unsigned long arg)
{
	int ret = 0;
	LOG(KERN_INFO "tzic_ioctl called");

	switch (cmd) {
	case TZIC_IOCTL_GET_FUSE_REQ: {
		ret = get_tamper_fuse_cmd();
		LOG(KERN_INFO "tamper_fuse value = %x\n", ret);

		break;
	}
	case TZIC_IOCTL_SET_FUSE_REQ: {
		mutex_lock(&tzic_mutex);
		ret = set_tamper_fuse_cmd();
		mutex_unlock(&tzic_mutex);
		
		if (ret)
			LOG(KERN_INFO "failed tzic_set_fuse_cmd: %d\n", ret);
		ret = get_tamper_fuse_cmd();
		LOG(KERN_INFO "tamper_fuse value = %x\n", ret);
		
		break;
	}
	default:
		return -EINVAL;
	}
	return ret;
}
Esempio n. 2
0
static long tzic_ioctl(struct file *file, unsigned cmd,
		unsigned long arg)
{
	int ret = 0;

	ret = get_tamper_fuse_cmd();
	LOG("tamper_fuse before = %x\n", ret);

	switch (cmd) {
	case TZIC_IOCTL_SET_FUSE_REQ: {
		LOG("ioctl set_fuse\n");
		mutex_lock(&tzic_mutex);
		ret = set_tamper_fuse_cmd();
		mutex_unlock(&tzic_mutex);
		if (ret)
			LOG("failed tzic_set_fuse_cmd: %d\n", ret);
		ret = get_tamper_fuse_cmd();
		LOG("tamper_fuse after = %x\n", ret);
		break;
	}
	default:
		return -EINVAL;
	}
	return ret;
}
Esempio n. 3
0
static ssize_t tzic_read(struct file *file, char __user *buf, size_t len, loff_t *ppos)
{
	uint8_t tzic_value;
	int ret = sizeof(tzic_value);
	LOG(KERN_INFO "tzic_read called");

	tzic_value = get_tamper_fuse_cmd();
	memcpy((void *)buf, (void *)&tzic_value, sizeof(tzic_value));
	
	return ret;
}
static long tzic_ioctl(struct file *file, unsigned cmd,
		unsigned long arg)
{
	int ret = 0;
	int i = 0;
	t_flag param;

	switch(cmd){
		case TZIC_IOCTL_GET_FUSE_REQ:
			LOG(KERN_INFO "[oemflag]get_fuse\n");
			ret = get_tamper_fuse_cmd();
			LOG(KERN_INFO "[oemflag]tamper_fuse value = %x\n", ret);
		break;

		case TZIC_IOCTL_SET_FUSE_REQ:
			LOG(KERN_INFO "[oemflag]set_fuse\n");
			ret = get_tamper_fuse_cmd();
			LOG(KERN_INFO "[oemflag]tamper_fuse before = %x\n", ret);
			LOG(KERN_INFO "[oemflag]ioctl set_fuse\n");
			mutex_lock(&tzic_mutex);
			ret = set_tamper_fuse_cmd();
			mutex_unlock(&tzic_mutex);
			if (ret)
				LOG(KERN_INFO "[oemflag]failed tzic_set_fuse_cmd: %d\n", ret);
			ret = get_tamper_fuse_cmd();
			LOG(KERN_INFO "[oemflag]tamper_fuse after = %x\n", ret);
		break;

		case TZIC_IOCTL_SET_FUSE_REQ_DEFAULT://SET ALL OEM FLAG EXCEPT 0
			LOG(KERN_INFO "[oemflag]set_fuse_default\n");
			ret=copy_from_user( &param, (void *)arg, sizeof(param) );
			if(ret) {
				LOG(KERN_INFO "[oemflag]ERROR copy from user\n");
				 return ret;
			}
			for (i=OEMFLAG_MIN_FLAG+1;i<OEMFLAG_NUM_OF_FLAG;i++){
				param.name=i;
				LOG(KERN_INFO "[oemflag]set_fuse_name : %d\n", param.name);
				ret = get_tamper_fuse_cmd_new(param.name);
				LOG(KERN_INFO "[oemflag]tamper_fuse before = %x\n", ret);
				LOG(KERN_INFO "[oemflag]ioctl set_fuse\n");
				mutex_lock(&tzic_mutex);
				ret = set_tamper_fuse_cmd_new(param.name);
				mutex_unlock(&tzic_mutex);
				if (ret)
					LOG(KERN_INFO "[oemflag]failed tzic_set_fuse_cmd: %d\n", ret);
				ret = get_tamper_fuse_cmd_new(param.name);
				LOG(KERN_INFO "[oemflag]tamper_fuse after = %x\n", ret);
			}
		break;

		case TZIC_IOCTL_GET_FUSE_REQ_NEW:
			LOG(KERN_INFO "[oemflag]get_fuse\n");
			ret=copy_from_user( &param, (void *)arg, sizeof(param) );
			if(ret) {
				LOG(KERN_INFO "[oemflag]ERROR copy from user\n");
				 return ret;
			}
			if ((OEMFLAG_MIN_FLAG < param.name) && (param.name < OEMFLAG_NUM_OF_FLAG)){
				LOG(KERN_INFO "[oemflag]get_fuse_name : %d\n", param.name);
				ret = get_tamper_fuse_cmd_new(param.name);
				LOG(KERN_INFO "[oemflag]tamper_fuse value = %x\n", ret);
			} else {
				LOG(KERN_INFO "[oemflag]command error\n");
				return -EINVAL;
			}
		break;

		case TZIC_IOCTL_SET_FUSE_REQ_NEW:
			LOG(KERN_INFO "[oemflag]set_fuse\n");
			ret=copy_from_user( &param, (void *)arg, sizeof(param) );
			if(ret) {
				LOG(KERN_INFO "[oemflag]ERROR copy from user\n");
				 return ret;
			}
			if ((OEMFLAG_MIN_FLAG < param.name) && (param.name < OEMFLAG_NUM_OF_FLAG)){
				LOG(KERN_INFO "[oemflag]set_fuse_name : %d\n", param.name);
				ret = get_tamper_fuse_cmd_new(param.name);
				LOG(KERN_INFO "[oemflag]tamper_fuse before = %x\n", ret);
				LOG(KERN_INFO "[oemflag]ioctl set_fuse\n");
				//Qualcomm DRM oemflag only support HLOS_IMG_TAMPER_FUSE
				if (param.name == OEMFLAG_TZ_DRM) {
					mutex_lock(&tzic_mutex);
					ret = set_tamper_fuse_cmd();
					mutex_unlock(&tzic_mutex);
					if (ret)
						LOG(KERN_INFO "[oemflag]failed tzic_set_fuse_cmd: %d\n", ret);
				}
				mutex_lock(&tzic_mutex);
				ret = set_tamper_fuse_cmd_new(param.name);
				mutex_unlock(&tzic_mutex);
				if (ret)
					LOG(KERN_INFO "[oemflag]failed tzic_set_fuse_cmd: %d\n", ret);
				ret = get_tamper_fuse_cmd_new(param.name);
				LOG(KERN_INFO "[oemflag]tamper_fuse after = %x\n", ret);
			} else {
				LOG(KERN_INFO "[oemflag]command error\n");
				return -EINVAL;
			}
		break;

		default:
			LOG(KERN_INFO "[oemflag]command error\n");
			return -EINVAL;
	}
	return ret;
}
Esempio n. 5
0
int tzic_get_tamper_flag(void)
{
	return get_tamper_fuse_cmd();
}