Skip to content

Comments

net_device: correctly handle error#2017

Closed
eriksjolund wants to merge 1 commit intocontainers:mainfrom
eriksjolund:net-device-create-error
Closed

net_device: correctly handle error#2017
eriksjolund wants to merge 1 commit intocontainers:mainfrom
eriksjolund:net-device-create-error

Conversation

@eriksjolund
Copy link
Contributor

Use errno as exit value when move_network_device fails.

Add missing crun_make_error.

Closes: #2015
Closes: #2016

Use errno as exit value when move_network_device fails.

Add missing crun_make_error.

Closes: containers#2015
Closes: containers#2016

Signed-off-by: Erik Sjölund <erik.sjolund@gmail.com>
@gemini-code-assist
Copy link

Summary of Changes

Hello @eriksjolund, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request refines the error handling mechanisms within the move_network_device function. The changes ensure that error codes are accurately captured and propagated, both from child processes and within the parent process after waiting for child execution. This improves the reliability and diagnostic capabilities of network device operations by providing more meaningful error information.

Highlights

  • Corrected Error Exit Value: The _safe_exit call within the child process now correctly uses the errno value retrieved from crun_error_get_errno instead of a negated return code, ensuring proper error propagation.
  • Improved Parent Process Error Handling: The parent process's error handling after waitpid has been updated to use crun_make_error with the actual process exit status when a non-zero status is encountered, providing more precise error reporting for network device setup failures.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • src/libcrun/net_device.c
    • Modified _safe_exit to use crun_error_get_errno(err) for the exit value.
    • Updated the post-waitpid error check to use crun_make_error with the get_process_exit_status result.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request correctly improves error handling for network device movement by propagating the errno from the child process. The changes are logical and address the issues described. I've added one suggestion to make the error handling in the parent process more robust against unexpected child exit statuses.

Comment on lines +487 to +488
if (ret > 0)
return crun_make_error (err, ret, "set up network device");

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The check if (ret > 0) doesn't handle the case where get_process_exit_status returns a negative value (e.g., -1 if the child process status is unexpected). In such a scenario, the function would incorrectly return 0, indicating success. It's better to handle all non-zero return values from get_process_exit_status as errors.

  if (ret != 0)
    return crun_make_error (err, ret > 0 ? ret : EIO, "set up network device");

@packit-as-a-service
Copy link

Ephemeral COPR build failed. @containers/packit-build please check.

@packit-as-a-service
Copy link

TMT tests failed. @containers/packit-build please check.

@eriksjolund
Copy link
Contributor Author

#2015 is invalid.
#2016 is not necessary to fix. One advantage would be that the same implementation as seccomp.c would be used.

I'm closing this PR as there are no big gains.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant