File tree Expand file tree Collapse file tree 1 file changed +17
-2
lines changed
Expand file tree Collapse file tree 1 file changed +17
-2
lines changed Original file line number Diff line number Diff line change @@ -20,6 +20,11 @@ struct rt_irq_desc irq_desc[MAX_HANDLERS];
2020
2121rt_uint16_t irq_mask_8259A = 0xFFFF ;
2222
23+ rt_inline rt_bool_t _interrupt_vector_is_valid (int vector )
24+ {
25+ return (vector >= 0 ) && (vector < MAX_HANDLERS );
26+ }
27+
2328void rt_hw_interrupt_handle (int vector , void * param );
2429
2530/**
@@ -92,14 +97,24 @@ void rt_hw_interrupt_init(void)
9297
9398void rt_hw_interrupt_umask (int vector )
9499{
95- irq_mask_8259A = irq_mask_8259A & ~(1 <<vector );
100+ if (!_interrupt_vector_is_valid (vector ))
101+ {
102+ return ;
103+ }
104+
105+ irq_mask_8259A = irq_mask_8259A & ~(rt_uint16_t )(1U << vector );
96106 outb (IO_PIC1 + 1 , (char )irq_mask_8259A );
97107 outb (IO_PIC2 + 1 , (char )(irq_mask_8259A >> 8 ));
98108}
99109
100110void rt_hw_interrupt_mask (int vector )
101111{
102- irq_mask_8259A = irq_mask_8259A | (1 <<vector );
112+ if (!_interrupt_vector_is_valid (vector ))
113+ {
114+ return ;
115+ }
116+
117+ irq_mask_8259A = irq_mask_8259A | (rt_uint16_t )(1U << vector );
103118 outb (IO_PIC1 + 1 , (char )irq_mask_8259A );
104119 outb (IO_PIC2 + 1 , (char )(irq_mask_8259A >> 8 ));
105120}
You can’t perform that action at this time.
0 commit comments