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; }
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; }
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( ¶m, (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( ¶m, (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( ¶m, (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; }
int tzic_get_tamper_flag(void) { return get_tamper_fuse_cmd(); }