}
err = copy_to_user((void *)arg, data, len);
+ if (err)
+ err = -EFAULT;
GOTO(out, err);
}
CDEBUG(D_IOCTL, "device name %s, dev %d\n", data->ioc_inlbuf1,
dev);
err = copy_to_user((void *)arg, data, sizeof(*data));
+ if (err)
+ err = -EFAULT;
GOTO(out, err);
}
CDEBUG(D_IOCTL, "device name %s, dev %d\n", data->ioc_inlbuf1,
dev);
err = copy_to_user((void *)arg, data, sizeof(*data));
+ if (err)
+ err = -EFAULT;
GOTO(out, err);
}
GOTO(out, err=-EINVAL);
err = copy_to_user((void *)arg, data, sizeof(*data));
+ if (err)
+ err = -EFAULT;
GOTO(out, err);
}
GOTO(out, err);
err = copy_to_user((void *)arg, data, sizeof(*data));
+ if (err)
+ err = -EFAULT;
// XXX save connection data into file handle
GOTO(out, err);
}
#warning FIXME: save lsm into file handle for other ops, release on close
err = obd_create(&conn, &data->ioc_obdo1, &lsm);
- if (!err)
+ if (!err) {
err = copy_to_user((void *)arg, data, sizeof(*data));
+ if (err)
+ err = -EFAULT;
+ }
GOTO(out, err);
}
case OBD_IOC_GETATTR: {
obd_data2conn(&conn, data);
err = obd_getattr(&conn, &data->ioc_obdo1, NULL);
- if (!err)
+ if (!err) {
err = copy_to_user((void *)arg, data, sizeof(*data));
+ if (err)
+ err = -EFAULT;
+ }
GOTO(out, err);
}
case OBD_IOC_SETATTR: {
obd_data2conn(&conn, data);
err = obd_setattr(&conn, &data->ioc_obdo1, NULL);
- if (!err)
+ if (!err) {
err = copy_to_user((void *)arg, data, sizeof(*data));
+ if (err)
+ err = -EFAULT;
+ }
GOTO(out, err);
}
obd_data2conn(&conn, data);
err = obd_destroy(&conn, &data->ioc_obdo1, NULL);
- if (!err)
+ if (!err) {
err = copy_to_user((void *)arg, data, sizeof(*data));
+ if (err)
+ err = -EFAULT;
+ }
GOTO(out, err);
}
obd_data2conn(&conn, data);
err = obd_open(&conn, &data->ioc_obdo1, lsm);
- if (!err)
+ if (!err) {
err = copy_to_user((void *)arg, data, sizeof(*data));
+ if (err)
+ err = -EFAULT;
+ }
GOTO(out, err);
}
GOTO(out, err);
err = copy_to_user((void *)arg, data, len);
+ if (err)
+ err = -EFAULT;
GOTO(out, err);
}