diff --git a/packages/mui-material/src/FilledInput/FilledInput.js b/packages/mui-material/src/FilledInput/FilledInput.js
index ab672ed77d02f8..8d2a6b1aa4588c 100644
--- a/packages/mui-material/src/FilledInput/FilledInput.js
+++ b/packages/mui-material/src/FilledInput/FilledInput.js
@@ -234,7 +234,7 @@ const FilledInput = React.forwardRef(function FilledInput(inProps, ref) {
const componentsProps =
slotProps ?? componentsPropsProp
- ? deepmerge(slotProps ?? componentsPropsProp, filledInputComponentsProps)
+ ? deepmerge(filledInputComponentsProps, slotProps ?? componentsPropsProp)
: filledInputComponentsProps;
const RootSlot = slots.root ?? components.Root ?? FilledInputRoot;
diff --git a/packages/mui-material/src/FilledInput/FilledInput.test.js b/packages/mui-material/src/FilledInput/FilledInput.test.js
index e7ce5fde0068d7..cb79f65cbb5af3 100644
--- a/packages/mui-material/src/FilledInput/FilledInput.test.js
+++ b/packages/mui-material/src/FilledInput/FilledInput.test.js
@@ -1,6 +1,7 @@
import * as React from 'react';
import { expect } from 'chai';
import { createRenderer, describeConformance } from '@mui-internal/test-utils';
+import { styled } from '@mui/material/styles';
import FilledInput, { filledInputClasses as classes } from '@mui/material/FilledInput';
import InputBase from '@mui/material/InputBase';
@@ -67,4 +68,10 @@ describe('', () => {
);
expect(document.querySelector('[data-test=test]')).toHaveComputedStyle({ marginTop: '10px' });
});
+
+ it('should not throw: "Maximum call stack size exceeded" if both slotProps and an adornment are passed', () => {
+ const Adornment = styled('div')({});
+ render(} slotProps={{}} />);
+ render(} slotProps={{}} />);
+ });
});