Introduction
In our last lesson, you mastered the art of formatting your commits into a canonical patch series using git format-patch, including how to generate versioned updates. You now have a set of perfectly structured .patch files, ready for the community.
This lesson addresses the final, and arguably most important, phase of the contribution workflow: receiving feedback on a patch and submitting subsequent versions. This is where your technical work meets the collaborative culture of open-source development. Mastering this interactive loop is what separates a one-time contributor from a long-term member of the community.
For your goal of succeeding in tough embedded interviews, being able to articulate this process demonstrates maturity and a deep understanding of how real-world, large-scale software projects operate. It shows you can navigate not just the code, but the community.
Let's begin by looking at a high-level map of this entire process.

The Post-Submission Process: From Sending to Revising
After you've sent your patch series to the appropriate mailing list (typically using git send-email), the review process begins. This isn't like a corporate code review; it's a public, asynchronous conversation.
Let's break down what happens next.
1. The Waiting Game: Patience and Persistence
Once your patch is on the mailing list, you must be patient. Maintainers and reviewers are often volunteers with heavy workloads.
Submitting patches: the essential guide to getting your code into the ...
The official kernel documentation provides excellent guidance on what to expect after you've submitted your work.
Read the section titled 'Don’t get discouraged - or impatient'. Note the suggested timeline (wait at least a week) and the correct procedure for 'pinging' the list by resending your patch with 'RESEND' in the subject line.
So, what if a week or two passes with complete silence? This is a common point of anxiety for new contributors.
Write and Submit your first Linux kernel Patch
Listen to kernel maintainer Greg Kroah-Hartman's direct advice on what to do when you don't get a response.
Watch from 36:05 to 36:25. The key takeaway is simple and powerful: be persistent. A polite reminder is not annoying; it's part of the process.
In summary:
- Wait at least a week. During merge windows (the two weeks after a new kernel is released), wait even longer.
- If there's no response, resend the exact same patch series with
[RESEND]added to the subject. This acts as a polite bump in the mailing list. - Don't use
[RESEND]if you have made any changes. That would be a new version (v2).
2. Receiving and Understanding Feedback
When feedback arrives, it will be in the form of email replies on the mailing list. The community has a very specific and effective communication style.

To participate effectively, you must follow the established etiquette.
Submitting patches: the essential guide to getting your code into the ...
The kernel documentation clearly outlines the expected communication style for mailing list discussions.
Read the section 'Use trimmed interleaved replies in email discussions'. The core principle is to reply inline to the specific points you are addressing, trimming any irrelevant quoted text. Top-posting is strongly discouraged as it makes conversations difficult to follow.
Feedback can be more than just requested changes. You'll often see specific "tags" added by reviewers, which act as a formal record of their assessment.
How to Start Contributing to the Linux Kernel - Kelsey Steele & Allen Pais, Microsoft
This presentation from Microsoft contributors provides a great overview of the different tags you'll encounter and what they signify.
Watch from 17:08 to 18:47. Pay close attention to the explanations for Tested-by:, Reviewed-by:, and Acked-by:. These tags are valuable signals to the maintainer that your patch has been vetted by others.
Here's a quick summary of the most common tags you'll receive from others:
Reviewed-by:: A strong endorsement. It means a developer has thoroughly reviewed your patch for technical correctness and quality and believes it is ready for inclusion.Acked-by:: An approval from a maintainer or domain expert who agrees with the change but may not have done a full, line-by-line review. It signifies that the patch fits within their subsystem's architecture and goals.Tested-by:: Confirmation that someone has applied your patch and successfully tested it in their environment. This is extremely valuable.Suggested-by:: Gives credit to the person who originally proposed the idea for the fix or feature.
When you receive these tags, you should add them to your commit message in the next version of your patch.
3. Responding to and Incorporating Feedback
This is where the iterative cycle truly begins. It's exceptionally rare for a patch to be accepted on the first try.
Becoming a Kernel Developer (2/3): Posted patches, what next? | Blog
This blog post from Linaro's 'Becoming a Kernel Developer' series sets the right expectation for the review process.
Read the short paragraph just below the 'Architectural Design and Best Practices' section. The key sentence is: 'Patches are rarely accepted on first submission.' Embracing this iterative process is key to success.
Your workflow for handling feedback should be:
- Acknowledge and Discuss: Reply to the feedback on the mailing list (using inline replies!). Thank the reviewers for their time. Answer any questions they had and confirm you will address the requested changes in the next version. Professionalism is paramount, even if the feedback feels harsh.
- Update Your Code: Go back to your local Git branch. Use
git rebase -ito navigate to the correct commit andgit commit --amendto make the necessary changes. - Write a Patch Changelog: For the new version of your patch (
v2), you must document what changed sincev1. This changelog is not part of the permanent Git history but is essential for reviewers. It goes below the---separator in your cover letter (for a series) or the individual patch file.
Submitting patches: the essential guide to getting your code into the ...
The official documentation specifies exactly how to document changes between versions.
First, read the paragraph under 'Respond to review comments', which states that you should add a 'patch changelog'. Then, find the section 'The canonical patch format' and look for the text about 'patch changelogs' after the '---' marker. This explains where to put the version information so it doesn't get committed.
Your v2 cover letter might look like this:
Subject: [PATCH v2 0/2] drivers: my-driver: Add support for new hardware
This series adds support for the new FooBar device.
Patch 1 adds the basic data structures.
Patch 2 implements the probe function.
---
Changes in v2:
- Replaced the use of kmalloc with devm_kmalloc in patch 2 as
suggested by Reviewer A.
- Corrected a typo in a comment in patch 1.
- Added Reviewed-by: Reviewer B <reviewer.b@example.com> to patch 1.
... rest of the file ...
4. Submitting the Next Version
With your code updated and changelog written, you are ready to submit the new version.
- Generate the New Patch Series: Use the
-v<N>flag as you learned in the previous lesson. For a two-patch series, the command would be:git format-patch --cover-letter -v2 -2 HEAD - Add the Changelog: Open the generated
0000-cover-letter.patchfile and add your changelog below the---separator. - Send the New Version: Use
git send-emailto send the new series. Crucially, ensure youCc:the reviewers who provided feedback. Theget_maintainer.plscript helps, but you should manually add anyone who commented on the previous version to keep them in the loop.
This cycle—revise, document, resubmit—continues until the maintainer is satisfied and applies your patch to their tree.
Interview Scenario
An interviewer asks: "You've submitted a three-patch series to the LKML. A week later, you get a reply from a subsystem maintainer. They say patch 1 looks good and give you an Acked-by: tag. For patch 3, they ask you to fix a potential null-pointer dereference. Describe, in detail, your step-by-step process for submitting v2."
A strong answer would be:
"My process would be as follows:
-
Acknowledge and Reply: First, I would reply to the maintainer's email on the mailing list. Using an inline-reply style, I would thank them for the review and the
Acked-by:tag. I would confirm that I understand the issue in patch 3 and that I will submit av2with the fix. -
Update Local Commits: I would check out my local development branch. I'd use an interactive rebase,
git rebase -i HEAD~3, to edit my commits.- For the first commit (patch 1), I would choose
editto amend the commit message and add the maintainer'sAcked-by: <maintainer's-name-and-email>tag. - For the third commit (patch 3), I would also choose
editto fix the null-pointer dereference in the code.
- For the first commit (patch 1), I would choose
-
Prepare the
v2Submission: Once the local commits are corrected, I would generate thev2patch series usinggit format-patch --cover-letter -v2 -3 HEAD. -
Write the Changelog: I would then open the generated
0000-cover-letter.patchfile. Below the---separator, I would add a changelog clearly summarizing the changes for this version, something like:Changes in v2: - Added maintainer's Acked-by to patch 1. - Fixed a potential null-pointer dereference in patch 3. -
Send
v2: Finally, I would usegit send-emailto send the new000*patch files. I would make sure the original recipients fromget_maintainer.plare on theTo:andCc:lines, and I would double-check that the maintainer who provided the feedback is explicitly included."
Conclusion
You have now completed the entire journey of a Linux kernel contribution, from identifying a change to navigating the crucial review and revision cycle. This is the heart of open-source collaboration.
Key Takeaways:
- The process is iterative: Expect feedback and multiple versions. This is a sign of a healthy, quality-focused process.
- Communication is key: Be patient, persistent, and professional. Always follow mailing list etiquette like inline replies.
- Document your changes: Use the changelog section (below
---) in new versions to help reviewers understand what you've updated. - Give credit: Add
Reviewed-by,Acked-by, andTested-bytags you receive to your commit messages.
By understanding and practicing this workflow, you have the skills not only to contribute code but to become a respected member of the Linux kernel community. This concludes our module on the open-source contribution workflow. You now have a complete, practical framework to begin your journey as a kernel developer.