Revision b1e341eb linux-user/syscall.c

b/linux-user/syscall.c
3872 3872
#if TARGET_LONG_BITS == 32
3873 3873
    case TARGET_NR_fcntl64:
3874 3874
    {
3875
	int cmd;
3875 3876
	struct flock64 fl;
3876 3877
	struct target_flock64 *target_fl;
3877 3878
#ifdef TARGET_ARM
3878 3879
	struct target_eabi_flock64 *target_efl;
3879 3880
#endif
3880 3881

  
3882
        switch(arg2){
3883
        case TARGET_F_GETLK64:
3884
            cmd = F_GETLK64;
3885
        case TARGET_F_SETLK64:
3886
            cmd = F_SETLK64;
3887
        case TARGET_F_SETLKW64:
3888
            cmd = F_SETLK64;
3889
        default:
3890
            cmd = arg2;
3891
        }
3892

  
3881 3893
        switch(arg2) {
3882
        case F_GETLK64:
3883
            ret = get_errno(fcntl(arg1, arg2, &fl));
3894
        case TARGET_F_GETLK64:
3895
            ret = get_errno(fcntl(arg1, cmd, &fl));
3884 3896
	    if (ret == 0) {
3885 3897
#ifdef TARGET_ARM
3886 3898
                if (((CPUARMState *)cpu_env)->eabi) {
......
3905 3917
	    }
3906 3918
	    break;
3907 3919

  
3908
        case F_SETLK64:
3909
        case F_SETLKW64:
3920
        case TARGET_F_SETLK64:
3921
        case TARGET_F_SETLKW64:
3910 3922
#ifdef TARGET_ARM
3911 3923
            if (((CPUARMState *)cpu_env)->eabi) {
3912 3924
                lock_user_struct(target_efl, arg3, 1);
......
3927 3939
                fl.l_pid = tswapl(target_fl->l_pid);
3928 3940
                unlock_user_struct(target_fl, arg3, 0);
3929 3941
            }
3930
            ret = get_errno(fcntl(arg1, arg2, &fl));
3942
            ret = get_errno(fcntl(arg1, cmd, &fl));
3931 3943
	    break;
3932 3944
        default:
3933
            ret = get_errno(do_fcntl(arg1, arg2, arg3));
3945
            ret = get_errno(do_fcntl(arg1, cmd, arg3));
3934 3946
            break;
3935 3947
        }
3936 3948
	break;

Also available in: Unified diff