Lines Matching refs:user

757 static void sbefifo_release_command(struct sbefifo_user *user)  in sbefifo_release_command()  argument
759 if (is_vmalloc_addr(user->pending_cmd)) in sbefifo_release_command()
760 vfree(user->pending_cmd); in sbefifo_release_command()
761 user->pending_cmd = NULL; in sbefifo_release_command()
762 user->pending_len = 0; in sbefifo_release_command()
768 struct sbefifo_user *user; in sbefifo_user_open() local
770 user = kzalloc(sizeof(struct sbefifo_user), GFP_KERNEL); in sbefifo_user_open()
771 if (!user) in sbefifo_user_open()
774 file->private_data = user; in sbefifo_user_open()
775 user->sbefifo = sbefifo; in sbefifo_user_open()
776 user->cmd_page = (void *)__get_free_page(GFP_KERNEL); in sbefifo_user_open()
777 if (!user->cmd_page) { in sbefifo_user_open()
778 kfree(user); in sbefifo_user_open()
781 mutex_init(&user->file_lock); in sbefifo_user_open()
789 struct sbefifo_user *user = file->private_data; in sbefifo_user_read() local
796 if (!user) in sbefifo_user_read()
798 sbefifo = user->sbefifo; in sbefifo_user_read()
802 mutex_lock(&user->file_lock); in sbefifo_user_read()
805 if (user->pending_len == 0) { in sbefifo_user_read()
809 if (user->pending_len < 8) { in sbefifo_user_read()
813 cmd_len = user->pending_len >> 2; in sbefifo_user_read()
822 rc = __sbefifo_submit(sbefifo, user->pending_cmd, cmd_len, &resp_iter); in sbefifo_user_read()
830 sbefifo_release_command(user); in sbefifo_user_read()
831 mutex_unlock(&user->file_lock); in sbefifo_user_read()
838 struct sbefifo_user *user = file->private_data; in sbefifo_user_write() local
842 if (!user) in sbefifo_user_write()
844 sbefifo = user->sbefifo; in sbefifo_user_write()
850 mutex_lock(&user->file_lock); in sbefifo_user_write()
854 user->pending_cmd = user->cmd_page; in sbefifo_user_write()
856 user->pending_cmd = vmalloc(len); in sbefifo_user_write()
857 if (!user->pending_cmd) { in sbefifo_user_write()
863 if (copy_from_user(user->pending_cmd, buf, len)) { in sbefifo_user_write()
869 if (len == 4 && be32_to_cpu(*(__be32 *)user->pending_cmd) == in sbefifo_user_write()
873 user->pending_len = 0; in sbefifo_user_write()
877 rc = sbefifo_request_reset(user->sbefifo); in sbefifo_user_write()
885 user->pending_len = len; in sbefifo_user_write()
887 if (!user->pending_len) in sbefifo_user_write()
888 sbefifo_release_command(user); in sbefifo_user_write()
890 mutex_unlock(&user->file_lock); in sbefifo_user_write()
898 struct sbefifo_user *user = file->private_data; in sbefifo_user_release() local
900 if (!user) in sbefifo_user_release()
903 sbefifo_release_command(user); in sbefifo_user_release()
904 free_page((unsigned long)user->cmd_page); in sbefifo_user_release()
905 kfree(user); in sbefifo_user_release()