Lines Matching refs:user

759 static void sbefifo_release_command(struct sbefifo_user *user)  in sbefifo_release_command()  argument
761 if (is_vmalloc_addr(user->pending_cmd)) in sbefifo_release_command()
762 vfree(user->pending_cmd); in sbefifo_release_command()
763 user->pending_cmd = NULL; in sbefifo_release_command()
764 user->pending_len = 0; in sbefifo_release_command()
770 struct sbefifo_user *user; in sbefifo_user_open() local
772 user = kzalloc(sizeof(struct sbefifo_user), GFP_KERNEL); in sbefifo_user_open()
773 if (!user) in sbefifo_user_open()
776 file->private_data = user; in sbefifo_user_open()
777 user->sbefifo = sbefifo; in sbefifo_user_open()
778 user->cmd_page = (void *)__get_free_page(GFP_KERNEL); in sbefifo_user_open()
779 if (!user->cmd_page) { in sbefifo_user_open()
780 kfree(user); in sbefifo_user_open()
783 mutex_init(&user->file_lock); in sbefifo_user_open()
791 struct sbefifo_user *user = file->private_data; in sbefifo_user_read() local
798 if (!user) in sbefifo_user_read()
800 sbefifo = user->sbefifo; in sbefifo_user_read()
804 mutex_lock(&user->file_lock); in sbefifo_user_read()
807 if (user->pending_len == 0) { in sbefifo_user_read()
811 if (user->pending_len < 8) { in sbefifo_user_read()
815 cmd_len = user->pending_len >> 2; in sbefifo_user_read()
824 rc = __sbefifo_submit(sbefifo, user->pending_cmd, cmd_len, &resp_iter); in sbefifo_user_read()
832 sbefifo_release_command(user); in sbefifo_user_read()
833 mutex_unlock(&user->file_lock); in sbefifo_user_read()
840 struct sbefifo_user *user = file->private_data; in sbefifo_user_write() local
844 if (!user) in sbefifo_user_write()
846 sbefifo = user->sbefifo; in sbefifo_user_write()
852 mutex_lock(&user->file_lock); in sbefifo_user_write()
856 user->pending_cmd = user->cmd_page; in sbefifo_user_write()
858 user->pending_cmd = vmalloc(len); in sbefifo_user_write()
859 if (!user->pending_cmd) { in sbefifo_user_write()
865 if (copy_from_user(user->pending_cmd, buf, len)) { in sbefifo_user_write()
871 if (len == 4 && be32_to_cpu(*(__be32 *)user->pending_cmd) == in sbefifo_user_write()
875 user->pending_len = 0; in sbefifo_user_write()
879 rc = sbefifo_request_reset(user->sbefifo); in sbefifo_user_write()
887 user->pending_len = len; in sbefifo_user_write()
889 if (!user->pending_len) in sbefifo_user_write()
890 sbefifo_release_command(user); in sbefifo_user_write()
892 mutex_unlock(&user->file_lock); in sbefifo_user_write()
900 struct sbefifo_user *user = file->private_data; in sbefifo_user_release() local
902 if (!user) in sbefifo_user_release()
905 sbefifo_release_command(user); in sbefifo_user_release()
906 free_page((unsigned long)user->cmd_page); in sbefifo_user_release()
907 kfree(user); in sbefifo_user_release()