int smb_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg) { struct smb_sb_info *server = server_from_inode(inode); struct smb_conn_opt opt; int result = -EINVAL; switch (cmd) { case SMB_IOC_GETMOUNTUID: result = put_user(NEW_TO_OLD_UID(server->mnt->mounted_uid), (uid16_t *) arg); break; case SMB_IOC_GETMOUNTUID32: result = put_user(server->mnt->mounted_uid, (uid_t *) arg); break; case SMB_IOC_NEWCONN: /* arg is smb_conn_opt, or NULL if no connection was made */ if (!arg) { result = smb_wakeup(server); break; } result = -EFAULT; if (!copy_from_user(&opt, (void *)arg, sizeof(opt))) result = smb_newconn(server, &opt); break; default: break; } return result; }
int smb_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg) { struct smb_sb_info *server = SMB_SERVER(inode); struct smb_conn_opt opt; int result = -EINVAL; switch (cmd) { case SMB_IOC_GETMOUNTUID: result = put_user(NEW_TO_OLD_UID(server->mnt->mounted_uid), (uid16_t *) arg); break; case SMB_IOC_GETMOUNTUID32: result = put_user(server->mnt->mounted_uid, (uid_t *) arg); break; case SMB_IOC_NEWCONN: /* require an argument == the mount data, else it is EINVAL */ if (!arg) break; result = -EFAULT; if (!copy_from_user(&opt, (void *)arg, sizeof(opt))) result = smb_newconn(server, &opt); break; default: } return result; }
int smb_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg) { struct smb_sb_info *server = SMB_SERVER(inode); int result = -EINVAL; switch (cmd) { case SMB_IOC_GETMOUNTUID: result = put_user(server->mnt->mounted_uid, (uid_t *) arg); break; case SMB_IOC_NEWCONN: { struct smb_conn_opt opt; if (arg) { result = -EFAULT; if (!copy_from_user(&opt, (void *)arg, sizeof(opt))) result = smb_newconn(server, &opt); } else { #if 0 /* obsolete option ... print a warning */ printk("SMBFS: ioctl deprecated, please upgrade " "smbfs package\n"); #endif result = 0; } break; } default: } return result; }