DF-3112 / fix.diff
--- a/sys/vfs/hammer/hammer_ioctl.c +++ b/sys/vfs/hammer/hammer_ioctl.c @@ -84,8 +84,10 @@ } break; case HAMMERIOC_GETHISTORY: - error = hammer_ioc_gethistory(&trans, ip, + if (error == 0) { + error = hammer_ioc_gethistory(&trans, ip, (struct hammer_ioc_history *)data); + } break; case HAMMERIOC_REBLOCK: if (error == 0 && hmp->ronly) @@ -115,12 +117,16 @@ } break; case HAMMERIOC_SYNCTID: - error = hammer_ioc_synctid(&trans, ip, + if (error == 0) { + error = hammer_ioc_synctid(&trans, ip, (struct hammer_ioc_synctid *)data); + } break; case HAMMERIOC_GET_PSEUDOFS: - error = hammer_ioc_get_pseudofs(&trans, ip, + if (error == 0) { + error = hammer_ioc_get_pseudofs(&trans, ip, (struct hammer_ioc_pseudofs_rw *)data); + } break; case HAMMERIOC_SET_PSEUDOFS: if (error == 0 && hmp->ronly) @@ -175,12 +181,16 @@ } break; case HAMMERIOC_GET_VERSION: - error = hammer_ioc_get_version(&trans, ip, + if (error == 0) { + error = hammer_ioc_get_version(&trans, ip, (struct hammer_ioc_version *)data); + } break; case HAMMERIOC_GET_INFO: - error = hammer_ioc_get_info(&trans, + if (error == 0) { + error = hammer_ioc_get_info(&trans, (struct hammer_ioc_info *)data); + } break; case HAMMERIOC_SET_VERSION: if (error == 0 && hmp->ronly) @@ -211,8 +221,10 @@ } break; case HAMMERIOC_LIST_VOLUMES: - error = hammer_ioc_volume_list(&trans, ip, - (struct hammer_ioc_volume_list *)data); + if (error == 0) { + error = hammer_ioc_volume_list(&trans, ip, + (struct hammer_ioc_volume_list *)data); + } break; case HAMMERIOC_ADD_SNAPSHOT: if (error == 0 && hmp->ronly) @@ -231,12 +243,18 @@ } break; case HAMMERIOC_GET_SNAPSHOT: - error = hammer_ioc_get_snapshot( - &trans, ip, (struct hammer_ioc_snapshot *)data); + if (error == 0) { + error = hammer_ioc_get_snapshot( + &trans, ip, + (struct hammer_ioc_snapshot *)data); + } break; case HAMMERIOC_GET_CONFIG: - error = hammer_ioc_get_config( - &trans, ip, (struct hammer_ioc_config *)data); + if (error == 0) { + error = hammer_ioc_get_config( + &trans, ip, + (struct hammer_ioc_config *)data); + } break; case HAMMERIOC_SET_CONFIG: if (error == 0 && hmp->ronly) @@ -261,8 +279,11 @@ } break; case HAMMERIOC_SCAN_PSEUDOFS: - error = hammer_ioc_scan_pseudofs( - &trans, ip, (struct hammer_ioc_pseudofs_rw *)data); + if (error == 0) { + error = hammer_ioc_scan_pseudofs( + &trans, ip, + (struct hammer_ioc_pseudofs_rw *)data); + } break; default: error = EOPNOTSUPP; |