Timing closure, which is to meet the design's timing con-straints, is a key problem in the physical design flow. Dur- ing the timing optimization process, buffers can be used to speedup the circuit or serve as delay elements. In this pa- per, we study the hold-violation removal problem for to- day's industrial designs. Discrete buffers, accurate timing models/analysis, and complex timing constraints make the problem difficult and time-consuming to solve. In this paper, we first present a linear programming-based methodology to model the setup and hold-time constraints. Then based on the solution to the linear programming, buffers are inserted as delay elements to solve hold violations. In the experiment, our approach is tested on industrial designs, then runs with the industrial optimization flow, and better results in terms of hold violations and runtime are reported.